gpt4 book ai didi

javascript - 从一系列要按顺序执行的 promise 中创建一个 jquery promise

转载 作者:行者123 更新时间:2023-11-29 18:19:52 27 4
gpt4 key购买 nike

jquery 是否支持从一组按顺序执行的 promise (或函数)中形成 promise ?例如,

假设我定义了这个函数

function wait(/*args*/){
var complete = $.Deferred();
var args = arguments;
setTimeout(function(){
console.log(args);
//arguments are applied to show that the functionality should
//pass arguments between promises in sequence.
complete.resolve.apply(null,args);
}, 1000);
return complete.promise();
}

我可以很容易地将它们链接在一起形成一个新的 promise ,如下所示:

var sequencePromise = wait("first")
.then(wait.bind(null,"second"))
.then(wait.bind(null,"third"));

但是我经常有一系列的 promise 要排序,或者它们可能是我正在编写的变量列表,所以我正在寻找一种方法来轻松地做一些事情,比如:

var sequence = [
wait("first"),
wait.bind(null,"second"),
wait.bind(null,"third")];

var sequencePromise = $.whenInSeq(sequence)

最好,我正在寻找一个不是很大依赖性的解决方案(如果我只是错过了 jquery api 中的某些内容,那将是理想的选择)。想要在我推出自己的产品之前确认某些东西不存在。

最佳答案

试试这个(未经测试):

var sequence = [
wait("first"),
wait.bind(null,"second"),
wait.bind(null,"third")];

var s = sequence[0];
for (var i = 1; i < sequence.length; i++) {
s = s.then(sequence[i]);
}
s.done(function () {alert('done!')})

关于javascript - 从一系列要按顺序执行的 promise 中创建一个 jquery promise ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19791910/

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