對於非同步函式的序列和並行執行如果處理不好會出現js的**地獄,在這方面async.js是乙個不錯的解決方案,有時為了縮小**體積自己diy乙個
//序列執行arr中的函式
var series= function
(arr, callback) else
}process();
}
//並行執行arr中的函式
var parallel= function
(arr,callback)
}if (counter == 0)
else
); }
}
應用舉例:
series([function
(cb) , 100);
},function
(cb) ,
function
(cb) ,
], function
() );
輸出:complete
parallel([function
(cb) , 100);
},function
(cb) ,
function
(cb) ,
], function
() )
輸出:complete
可以看出series會按定義的順序執行,parallel不會按定義的順序執行,但是complete都會在前面的序列執行完成再執行
parallel方法 非同步並行執行
promise提供了all方法,但是狀態只有2種,第一種是所有promise例項都成功則返回值組成乙個陣列,傳遞給p的 函式 第二種是有乙個例項被rejected,狀態就變成rejected,此時第乙個被reject的例項的返回值,會傳遞給p的 函式。問題 其實我想要所有非同步的結果,不管成功與否,...
非同步方法的序列執行
用於簡單處理兩個事件的序列執行,在事件a執行完成之後,執行函式b。const events require events const fs require fs const emitter new events.eventemitter fs.readfile file1.txt utf 8 fun...
AsyncTask並行執行
使用asynctask時發現乙個奇怪的現象,即建立多個任務的時候,他是乙個乙個按順序執行的,查資料之後發現 在1.5中初始引入的時候,asynctask 執行 asynctask.execute 起來是順序的,當同時執行多個 asynctask的時候,他們會按照順序乙個乙個執行。前面乙個執行完才會執...