非同步函式的序列執行和並行執行

2022-08-01 10:51:12 字數 798 閱讀 3067

對於非同步函式的序列和並行執行如果處理不好會出現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的時候,他們會按照順序乙個乙個執行。前面乙個執行完才會執...