1

谁能告诉我我在这里做错了什么?

我有一个承诺,当返回结果时会丢失局部变量范围。

我需要延迟调用完成时可用的 id 值:

getChildren:function(id){
    service.getChildren(id)
   .then(function(result){
        var parentId = id  //null
        return result
    })
   .fail(function (error) {
        log.error(error);
    })
}
4

1 回答 1

0

您是否期望result从对 的调用中返回getChildren()

如果是这样(假设service.getChildren()返回一个 jQuery Promise),代码需要稍微修改一下,以便.getChildren()返回稍后交付的承诺:result

这可以通过以下方式实现:

getChildren:function(id) {
    return service.getChildren(id).done(function(result) {
        //here do something generic with `result`
    }).fail(function (error) {
        log.error(error);
    });
}

并且.getChildren()可能被称为如下:

myObj.getChildren(myID).done(function(result) {
    //here do something specific with `result`
});

.then()注意:这里似乎不需要额外的力量,但如果您想承诺交付除result.

于 2013-04-11T21:56:48.030 回答