谁能告诉我这里我做错了什么?
我有一个承诺,即在返回结果时失去局部变量范围。
延迟调用结束时我需要可用的id值:
getChildren:function(id){
service.getChildren(id)
.then(function(result){
var parentId = id //null
return result
})
.fail(function (error) {
log.error(error);
})
}
答案 0 :(得分: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
以外的其他内容,则必须提供{{1}}。