jquery 是否支持从一系列要按顺序执行的承诺(或函数)中形成承诺?例如,
假设我定义了这个函数
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();
}
我可以轻松地将它们链接在一起以形成一个新的承诺,如下所示:
var sequencePromise = wait("first")
.then(wait.bind(null,"second"))
.then(wait.bind(null,"third"));
但是,我经常有一系列要排序的承诺,或者它们可能是我正在编写的变量列表,所以我正在寻找一种方法来轻松地执行以下操作:
var sequence = [
wait("first"),
wait.bind(null,"second"),
wait.bind(null,"third")];
var sequencePromise = $.whenInSeq(sequence)
最好,我正在寻找一个不是很大依赖的解决方案(如果我错过了 jquery api 中的某些内容,那将是理想的)。在我自己动手之前想确认某些东西不存在。