如何构造一个jquery承诺数组
How to construct an array of jquery promises?
假设我有一个返回promise的async函数。我想链接很多这样的函数,每个函数都有不同的参数。
执行数组的函数是这样的:
function executePromiseQueueSync(queue){
var seed = $.Deferred(),
finalPromise;
_reduce(queue, function(memo, promise){
return memo.then(promise);
}, seed.promise());
seed.resolve();
return finalPromise;
}
我看到一些函数接受一组承诺并同步执行它们。问题是我不知道如何创建这样一个数组。例子:
var promiseQueue = [];
promiseQueue.push(AsynchEvent(someArg)); // WRONG: this is function call and will be executed immediately
:
var promiseQueue = [];
promiseQueue.push(AsynchEvent); // WRONG: at some point I will have to apply this with arguments
所以-有没有一种方法把一个函数返回一个承诺到一个数组,而不执行它?
编辑后更新:
如果你从一开始就包含这些信息就好了,所以这里有一个尝试。
我假设第一个输入是已知的,并且最后一个函数的返回值应该进入列表中的下一个函数。
在这种情况下,我们仍然像前面一样定义并添加Queue:
var promiseQueue = [];
promiseQueue.push(AsynchEvent);
但是我们需要修改循环位。我将把它变成一个函数,只是为了展示如何使用它。
function calcPromise(initialArg) {
aggregateArg = initialArg;
for (var i = 0; i < myStringArray.length; i++) {
aggregateArg = promiseQueue[i](aggregateArg);
}
return aggregateArg;
}
请记住,这是JavaScript -从一个函数返回的内容和向下一个函数提供的内容在该函数的两次迭代之间可能完全不同。例如
- promiseQueue[0]可以期望一个int并返回一个JSON结构。
- promiseQueue[1]可以期望一个JSON结构并返回一个字符串。
- 等等
相关文章:
- 我已经创建了一个jquery转盘,并使用if条件来运行和停止转盘
- 按照选项卡索引的顺序循环一个jQuery选择
- 在创建对象后附加一个jquery事件
- 我需要一个jQuery函数来只工作在700px以上的屏幕大小,无法在我的代码中发现错误
- 一个jquery验证器方法,它不接受纯数字或纯特殊字符,但接受上面是否有字母
- 我做了一个jquery幻灯片,但没有;我工作不好,我该怎么办
- 我创建了一个jQuery幻灯片,但它一直在重复相同的图像
- 是preventDefault()一个jQuery函数或javascript函数
- 使用一个 jquery 代码关闭多个模态
- 如何在 elfinder(一个 jquery 文件管理器插件)中只显示文件夹列表
- 遍历下一个和上一个 jQuery 选项卡
- module.exports一个jQuery插件
- 有没有一个jquery marquee插件/脚本可以处理不同宽度的图像
- 一个jquery初始化中有多个类
- 如何从其中的另一个jquery脚本运行.load()
- 从 javascript 数组创建一个 Jquery 数组
- 第一个jquery事件正在发生,但没有发生第二个事件
- 向一个jQuery/DOM元素添加一个函数
- 我们如何在jQuery Datatable调用结果中启动另一个jQuery插件,而不是页面就绪函数
- 我可以自动生成一个jquery块,对不同的元素做同样的事情吗