Javascript 从要顺序执行的承诺数组创建jquery承诺

Javascript 从要顺序执行的承诺数组创建jquery承诺,javascript,jquery,Javascript,Jquery,jquery是否支持从一系列按顺序执行的承诺(或函数)中形成承诺? 比如说, 假设我定义了这个函数 function wait(/*args*/){ var complete = $.Deferred(); var args = arguments; setTimeout(function(){ console.log(args); //arguments are applied to show that the functionality

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)
最好是,我正在寻找一个不是很大依赖关系的解决方案(如果我只是错过了jQueryAPI中的一些东西,这将是理想的)。在我推出我自己的产品之前,我想确认一些产品不存在。

试试这个(未测试):

var序列=[
等等(“第一”),
wait.bind(null,“second”),
wait.bind(null,“third”)];
var s=序列[0];
对于(变量i=1;i
试试这个(未测试):

var序列=[
等等(“第一”),
wait.bind(null,“second”),
wait.bind(null,“third”)];
var s=序列[0];
对于(变量i=1;i
?不,不太可能。虽然这是一种有用的技术(仅适用于$.when),但“when”执行函数的方式与使用“then”链接时不同。从语义上说,就是说,等待所有这些完成,然后执行。我要寻找的是,当这项工作完成时,do
A
,当
A
的结果完成时,do
B
,当
B
的结果完成时,do
C
不完全是这样。虽然这是一种有用的技术(仅适用于$.when),但“when”执行函数的方式与使用“then”链接时不同。从语义上说,就是说,等待所有这些完成,然后执行。我要寻找的是,当这项工作完成时,do
A
,当
A
的结果完成时,do
B
,当
B
的结果完成时,do
C
…谢谢,除了可以很好地使用的小字体之外。我想我可以做一个实用的方法来很容易地包装它们。这里有一把小提琴在工作,我会纠正顺序。但是,长度的变化小于6个字符,除了小的排版,效果很好。我想我可以做一个实用的方法来很容易地包装它们。这里有一把小提琴在工作,我要纠正顺序。但是长度的变化小于6个字符
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!')})