我已經看到許多問題的答案有關多個延遲正在等待一次,但我有困難等待,然後在觸發最終「完成」事件之前處理這些延遲。考慮下面的代碼,其中我有一個等待的延期列表,然後對於每個延期,我想處理已解決的值,以便在完成所有完成後,我可以將每個延期的結果作爲骨幹集合返回。jQuery多個延遲解決和返回之前處理
我遇到的問題是,在所有deferred.done()lambda完成之前,事件正在被解僱。有什麼方法可以讓這個同步?
(我使用的骨幹機型/收藏和下劃線)
var deferreds = [];
_.forEach(upcs, function(upc){
deferreds.push(getProduct(upc)); //getProduct() returns a deferred
});
$.when.apply($, deferreds).done(function(){
var products = new Products();
_.forEach(deferreds, function(deferred){
deferred.done(function(product) { //deferred resolve() returns product
products.add(product);
});
});
that.trigger("claimed", products); //fire fully resolved collection
});
它發生,我認爲這可以通過使用各做()拉姆達內解決deferreds的第二列表是可以實現的,但似乎笨拙對我 – 2014-08-27 13:44:19
http://jsfiddle.net/arunpjohny/m1uLnczv/2/ – 2014-08-27 13:49:59