我是新来的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 For循环内部异步回调
- 6. Node.js CoffeeScript异步样式和循环
- 7. Node.js - 异步虽然循环不迭代
- 8. Node.js Api调用异步循环
- 9. Node.js异步setInterval游戏循环?
- 10. Node.js异步循环查询数据库
- 11. 如何在同步循环内的Node.JS中使用setTimeout?
- 12. node.js用于以同步方式执行循环
- 13. for循环同步方法
- 14. 无限循环同步syncadapter
- 15. 同步循环链表
- 16. 同步循环队列
- 17. Ember同步循环服务
- 18. 同步循环线程
- 19. Android:同步游戏循环
- 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块内调用阻塞函数,则整个循环也将同步。我真的没有让你问题... –
为什么默认情况下循环不会同步? –
这需要更多信息。 –