Javascript Promise/然后失去范围

标签 javascript backbone.js jquery-deferred promise q

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

我有一个 promise ,当返回结果时,它会失去局部变量范围。

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

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

最佳答案

您是否期望从调用 getChildren() 返回结果

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

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

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() 的额外功能,但如果您想 promise 交付 result 之外的其他内容,则需要额外的功能。

关于Javascript Promise/然后失去范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15953080/

相关文章:

javascript - CSS 在移动设备上显示隐藏的下拉菜单

javascript - 如何在不回显的情况下将 session 值发送到客户端

javascript - asp.net mvc 将参数从 Jquery ajax 调用传递到 Controller

javascript - 如何使用backbone.js从javascript闭包内部调用其他内部方法?

javascript - 如何通过搜索包含的 div 的 id 从容器中删除类?

javascript - U haz Backbone retroactive `on` 事件监听器?

templates - 如何在主干中重新渲染部分模型?

javascript - 延迟解析后调用的函数范围

jQuery.当使用可变数量的参数进行故障排除时

javascript - API设计: How can I combine result of two deferred jQuery objects?