javascript - 如何处理嵌套的 jquery 延迟调用

标签 javascript jquery backbone.js jquery-deferred

我有一个获取一些数据的函数,该函数应该返回一个 promise 。在函数中,我必须提出 2 个请求——一个接一个。我结束了一个嵌套的 deferrer 调用,其中函数将返回 deferrer 上的最后一次调用 resolves。我对这种延迟的东西很陌生,想知道这是否是正确的解决方案。

function getData(func) {
    var model = new Model();
    var collection = new Collection();
    var dfd = new jQuery.Deferred();

    collection.fetch().then(function () {
        model.fetch().then(function () {
            dfd.resolve(collection);
        });
    });

    return dfd.then(function (collection) {
        return getViews(func(collection), model);
    });
}

最佳答案

Andreas,我看到你已经完全正确地接受了 Vitaliy 的回答,我并不是想窃取他的观点,但以防万一你不知道,没有必要创建和解析你自己的 $.Deferred() 并且无需传递 collection(func() 除外),因为它仍在范围内。

据我从问题中的代码可以看出,以下应该有效:

function getData(func) {
    var collection = new Collection();
    var model = new Model();
    return $.when(collection.fetch(), model.fetch()).then(function() {
        return getViews(func(collection), model);
    });
}

关于javascript - 如何处理嵌套的 jquery 延迟调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17095023/

相关文章:

jquery - 主干 subview 事件

javascript - 使用另一个数组在 underscorejs 中过滤一个数组

javascript - 地理位置:按接近度过滤

javascript - diji.Tree + JsonRestStore - 使用 tree.set ("path"以编程方式选择节点

javascript - 查找最近的 li 链接并在新页面中打开它 - Javascript

javascript - 通过 Backbone.js 安全访问经过身份验证的 REST 服务器?

php - 使用 Javascript 重定向到带有查询字符串的 URL 时出现问题

javascript - 悬停时使 DIV 显示在光标旁边

使用 Ajax 下载 JQuery 文件

Backbone.js:如何在更改模型集合时强制 View 自动刷新