我试图链承诺,而不是管道,只是链接。链jQuery承诺
例如,我有这样的方法:
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;
};
我想执行这个方法多次,但一前一后。我创建了确实比使用eval
的方法,但我不使用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/
什么是最佳解决方案?
干杯。
很好。我做了一个小改动来处理数组:http://jsfiddle.net/vtortola/ZaCp8/谢谢。 – vtortola