12: 13: for(var i = 0; i < funcArray.length; ++i)
14: {
15: asyncWhile(function(item, tIndex){
16: return function(){
17: if( tInfo.abort )
18: return false;
19: if( tInfo.currentIndex < tIndex )
20: return true;
21: else if( tInfo.currentIndex == tIndex )
22: {
23: try{
24: item();
25: }
26: catch(e){
27: if( abortWhenError ) tInfo.abort = true;
28: }
29: finally{
30: tInfo.currentIndex ++;
31: }
32: }
33: else
34: {
35: if( abortWhenError ) tInfo.abort = true;
36: }
37: return false;
38: };
39: }(funcArray[i], tInfo.count ++));
40: }
41:
42: setTimeout(function(){
43: if( tInfo.count > 0 && tInfo.currentIndex == -1 )
44: tInfo.currentIndex = 0;
45: },20); // 为了调试的原因,加了延迟启动
46: }
由此,一个支持Copy&Paste的异步js函数库就完成了。具体的使用例子如下:
1: function testAsync()
2: {
3: asyncSeq([function(){println("aSyncSeq -0 ");}
4: , function(){println("aSyncSeq -1 ");}
5: , function(){println("aSyncSeq -2 ");}
6: , function(){println("aSyncSeq -3 ");}
7: , function(){println("aSyncSeq -4 ");}
8: , function(){println("aSyncSeq -5 ");}
9: , function(){println("aSyncSeq -6 ");}
10: , function(){println("aSyncSeq -7 ");}
11: , function(){println("aSyncSeq -8 ");}
12: , function(){println("aSyncSeq -9 ");}
(责任编辑:12图资源库)