我是新來的node.js,我想知道是否有可能在一個循環中同步迭代。假設在for循環中我調用了一個阻塞函數(讀取,寫入),我希望for執行同步(等待第一次迭代完成,然後執行第二次,...)?我看到一些關於異步模塊的教程,但沒有人介紹這個問題。Node.js同步循環
0
A
回答
4
您不應該爲此使用for循環。 for
循環將同時觸發每個異步函數,這顯然不是你想要的。您應該創建自己的系統來調用這些系統。嘗試是這樣的:
- 你會想一個數組來保存所有URL的,你想打
- 你要創建一個調用列表中,等待第一個URL的功能響應
- 在回調函數這一號召,一旦所有的異步工作完成後,調用相同的功能,直到它出的URL的命中
應該看起來有點像這樣重新啓動過程:
var urls = new Array("google.com", "youtube.com", "stackoverflow.com");
function callFirstInArray() {
var url = urls.shift(); //removes the first from the array, and stores in variable 'url'
//do ajax work, and set callback function:
$.ajax(/*do stuff with the url variable*/, function() {
if (urls.length > 0) { //callback
callFirstInArray();
};
});
};
你可能無法完全按照我在這裏描述的方式工作,但它應該使用類似的概念。
注意:您可能需要額外的功能範圍,以保護您的原始URL的數組,因爲.shift()
會產生變異原陣列
0
你提到你正在閱讀和書寫文件,您使用的fs.readFile和fs.writeFile?這些是異步方法,您需要在回調中一個接一個地調用它們。
如果您確實想要使用循環,請查看這些方法的同步版本fs.readFileSync和fs.writeFileSync。
相關問題
- 1. 同步在node.js循環中
- 2. Javascript/Node.js異步循環
- 3. Node.js readline以同步方式?或者是一個異步循環?
- 4. Python循環同步
- 5. Node.js異步循環查詢數據庫
- 6. Node.js For循環內部異步回調
- 7. Node.js Api調用異步循環
- 8. Node.js CoffeeScript異步樣式和循環
- 9. Node.js - 異步雖然循環不迭代
- 10. Node.js異步setInterval遊戲循環?
- 11. 如何在同步循環內的Node.JS中使用setTimeout?
- 12. node.js用於以同步方式執行循環
- 13. 無限循環同步syncadapter
- 14. for循環同步方法
- 15. Ember同步循環服務
- 16. 同步循環鏈表
- 17. 同步循環隊列
- 18. Android:同步遊戲循環
- 19. 同步循環線程
- 20. javascript中的同步和異步循環
- 21. 循環同步多個異步。
- 22. Node.js for循環
- 23. node.js redis同步
- 24. Node.js和同步
- 25. Node.js的異步/同步
- 26. Node.js與json循環
- 27. node.js for for循環裏面的循環
- 28. 同步在Node.js的
- 29. Node.js&Redis/hget同步
- 30. Javascript:通過與setInterval同步循環遍歷循環
'for'同步,並且如果您僅在for塊內調用阻塞函數,則整個循環也將同步。我真的沒有讓你問題... –
爲什麼默認情況下循環不會同步? –
這需要更多信息。 –