我试图链接承诺,而不是管道,只是链接。
例如,我有这个方法:
var execute = function(x){
// this could be an AJAX call
var d= $.Deferred();
console.log('Begin ' + x);
setTimeout(function(){
console.log('End ' + x);
d.resolve();
},500);
return d;
};
我想多次执行这个方法,但是一个接一个。我创建了一个比 using 更有效的方法eval
,但我对 using 不太满意eval
:
var executeTimes = function(r){
var s = '';
for(var i=0;i<r;i++){
s = s + 'execute('+i+')';
if(i!==r-1)
s = s + '.then(function(){';
}
for(var i=0;i<r-1;i++){
s= s+'})';
}
eval(s);
}
这个想法是executeTimes(3);
你得到这个输出:
Begin 0
End 0
Begin 1
End 1
Begin 2
End 2
我在这里创建了一个实时示例:http: //jsfiddle.net/vtortola/Cfe5s/
最好的解决方案是什么?
干杯。