我遇到了这样的情况:我有一个包含多个JQuery Promise的数组。
var arrayOfPromises = [ $.Deferred(), $.Deferred(), $.Deferred(), $.Deferred() ]
我需要将其转换为一个数组的 JQuery Promise
var promiseOfArray = someTransform(arrayOfPromises)
查询条件
promiseOfArray.done(function(anArray){
alert(anArray.join(","));
});
创建一个带文本的提示框
result1,result2,result3,result4
我目前在 CoffeeScript 中定义了 someTransform
,如下所示:
someTransform = (arrayOfPromises) ->
$.when(arrayOfPromises...).pipe (promises...) ->
promises
这将转换为以下JavaScript代码
var someTransform,
__slice = [].slice;
someTransform = function(arrayOfPromises) {
return $.when.apply($, arrayOfPromises).pipe(function() {
var promises;
promises = 1 <= arguments.length ? __slice.call(arguments, 0) : [];
return promises;
});
};
这是一个 jsFiddle,展示了我正在寻找的结果。
我想知道是否有更好(更短、更简洁)的方法来定义 someTransform
,以达到相同的结果?