gpt4 book ai didi

backbone.js - 在 "reset"事件后使用 Promises 将主干绑定(bind)到 "fetch"

转载 作者:行者123 更新时间:2023-12-02 12:22:27 25 4
gpt4 key购买 nike

所以我有这个非常简单的用例:

init: function() {
app.products = new app.Collections.Products();
app.categories = new app.Collections.Categories();

var collections = [app.products, app.categories];
var complete = _.invoke(collections, 'fetch');

$.when(null, complete).then(function(){
// fetched, but no models
});
};

从 XHR 的角度来看,这工作得很好,但在回调内部,各个集合的模型尚未创建。在这个基于 promise 的解决方案中,是否有一种方法可以从“fetch”中查找“reset”事件?

最佳答案

您可以构建自己的延迟来协调您的调用。例如,您可以在集合的原型(prototype)上添加此函数:

function promiseSync() {
var dfd = $.Deferred();
this.once('sync', function() {
dfd.resolve();
});
return dfd.promise();
}

app.Collections.Products.prototype.promiseSync = promiseSync;
app.Collections.Categories.prototype.promiseSync = promiseSync;

然后,正如您对请求所做的那样,合并延迟的:

var syncs = _.invoke(collections, 'promiseSync');
$.when.apply(null, syncs).then(function(){
console.log('syncs');
});

还有一个演示 http://jsfiddle.net/nikoshr/Xb9Mk/

注意$.when.apply(null, array)的用法$.when(null, array) 将立即解析,这可能就是您在回调中看不到模型的原因。

关于backbone.js - 在 "reset"事件后使用 Promises 将主干绑定(bind)到 "fetch",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22764805/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com