Javascript jQuery在返回之前已解决并处理多个延迟
我已经看到许多关于同时等待多次延期的问题得到了回答,但我很难等待,然后在触发最终“完成”事件之前处理这些延期。考虑下面的代码,在那里我有一个等待的DEFRADS列表,然后对于每一个延迟,我想处理解析的值,这样我就可以返回每一个延迟的结果作为一个主干集合,一旦它们都完成了。 我遇到的问题是,事件是在所有deferred.done()lambda完成之前触发的。有什么方法可以让它同步吗 (我使用的是主干模型/集合和下划线)Javascript jQuery在返回之前已解决并处理多个延迟,javascript,jquery,backbone.js,asynchronous,Javascript,Jquery,Backbone.js,Asynchronous,我已经看到许多关于同时等待多次延期的问题得到了回答,但我很难等待,然后在触发最终“完成”事件之前处理这些延期。考虑下面的代码,在那里我有一个等待的DEFRADS列表,然后对于每一个延迟,我想处理解析的值,这样我就可以返回每一个延迟的结果作为一个主干集合,一旦它们都完成了。 我遇到的问题是,事件是在所有deferred.done()lambda完成之前触发的。有什么方法可以让它同步吗 (我使用的是主干模型/集合和下划线) 所有承诺的结果都可以作为结果提供。它们作为您的处理程序的 $.when.ap
所有承诺的结果都可以作为结果提供。它们作为您的处理程序的
$.when.apply($, deferreds).done(function() {
var products = new Products();
_.forEach(arguments, function(product) {
products.add(product);
});
that.trigger("claimed", products); //fire fully resolved collection
});
我突然想到,使用每个done()lambda内解析的第二个延迟列表可以实现这一点,但这在我看来似乎很笨拙,我不认为你会得到一个数组作为参数。。。您将获得与传递的延迟项一样多的参数。。看@ArunPJohny:你说得对。我总是忘记jQuery的
有多凌乱,当时。我明白了,返回的结果对我来说是看不见的,谢谢你的帮助!
$.when.apply($, deferreds).done(function() {
var products = new Products();
_.forEach(arguments, function(product) {
products.add(product);
});
that.trigger("claimed", products); //fire fully resolved collection
});