【发布时间】:2012-11-13 02:49:41
【问题描述】:
我正在尝试链接承诺,而不是管道,只是链接。
比如我有这个方法:
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/
最好的解决方案是什么?
干杯。
【问题讨论】:
标签: jquery asynchronous eval promise