的立即執行我使用節點JS異步模塊,我想運行一堆並聯功能。如果其中一個函數返回錯誤,我不希望主回調立即執行。我希望主回調在任何情況下都能被最後執行,並且我希望得到一個返回錯誤的項目數組,以及一個OK的項目數組。這是否可能沒有額外的邏輯?節點JS異步 - 防止主回調
0
A
回答
0
而是在該函數的回調返回錯誤的,只是把錯誤的錯誤陣列,按下OK項目的確定陣列,並呼籲用null作爲第一個參數(回調(空))回調所有功能。事情是這樣的:
var okArray = [];
var errorArray = [];
async.parallel([
function(callback) {
// do something
if (error) {
errorArray.push(errorItem);
} else {
okArray.push(okItem);
}
callback(null);
},
function(callback) {
// do something
if (error) {
errorArray.push(errorItem);
} else {
okArray.push(okItem);
}
callback(null);
}
], function(err) {
console.log(okArray);
console.log(errorArray);
});
如果你不介意在並行調用都成功/失敗的功能只是1陣列,並平行於數組中列出的順序返回結果的數組,每個功能。例如:
async.parallel([
function(callback) {
// do something
if (error) {
return callback(null, errorItem);
}
callback(null, okItem);
},
function(callback) {
// do something
if (error) {
return callback(null, errorItem);
}
callback(null, okItem);
}
], function(err, results) {
console.log(results); // results[0] = what 1st function returns
// results[1] = what 2nd function returns
});
0
嘗試尋找Javascript Promise對象。
讓所有您的並行函數返回一個承諾的對象,他們堅持一切到一個數組。 然後,做Promise.all([promises])。然後(回調); 除非你的函數拋出一個異常,否則你只能在所有函數執行完畢後才能調用回調函數。
相關問題
- 1. 節點js異步回調問題
- 2. 節點js異步調用
- 3. 節點JS - 數據庫調用異步?
- 4. 處理異步http調用節點js
- 5. 節點JS異步數據庫調用
- 6. 從節點js進行多個回調異步功能
- 7. 節點sqlite3的異步回調
- 8. 使用回調節點異步並行
- 9. 節點異步不執行回調
- 10. 節點腳本等待異步回調
- 11. 節點js異步函數和線程
- 12. 節點js多個http異步請求
- 13. 使用異步與http.get,節點JS
- 14. 防止從gridview與javascript異步回發
- 15. 節點Js回調函數
- 16. 節點JS異步工作不
- 17. MySQL節點JS異步問題
- 18. 異步節點JS查詢連接
- 19. 回調函數節點的回調js
- 20. 節點異步未運行異步
- 21. 節點異步與同步
- 22. 如何在函數返回時使節點JS異步
- 23. 從節點js中的異步範圍返回值
- 24. 使用AWS api的節點JS異步調用
- 25. 節點JS動態收集Ajax調用異步等待
- 26. 節點JS異步mongodb的發現()查詢多個調用
- 27. 節點JS同步數據庫調用
- 28. 使用異步序列化操作與節點js中的多個回調層
- 29. 如何在節點js中多次異步回調後保持數組值?
- 30. 節點JS上的HTTP請求回調與節點JS
謝謝,但我想堅持異步。 –