node.js里的forEach()也是异步的吗?

  • Post author:
  • Post category:其他


博客已经迁移到

www.imyzf.com

,本站不再更新,请谅解!

node里几乎所有用到回调函数的地方,都是异步的,回调函数后面的代码

很可能比


回调函数中的代码后先执行,特别是数据库操作。当然,node也提供了同步版本的函数,例如文件操作,fs.readFileSync()是fs.readFile()的同步版本。


那么问题来了,forEach()是不是异步的呢?按理说,没有加Sync,应该是异步的呀。

1 var arr = ['a', 'b', 'c'];
2 var str = '123';
3 arr.forEach(function(item) {
4   str += item;
5   while (true) {};  //用一个死循环,卡死它~~
6 });
7 console.log(str);  //本文来自http://www.cnblogs.com/ImYZF/p/4257389.html

运行上面的代码,结果它就这么卡死了,没有任何输出。。

所以说,node里的

forEach()是同步的

!!

第一次用node的时候,没有考虑过这个问题,按同步的写了,写突然想到,测试后虚惊一场,以为以前的代码都写错了。

如果在某些情况下,需要异步处理forEach,谷歌了一下,有个node-array,可以试试看~~ 传送门:

https://github.com/cfsghost/node-array


知识共享许可协议



本作品由

www.imyzf.com/?p=6

创作,采用

知识共享署名 4.0 国际许可协议

进行许可。

转载于:https://www.cnblogs.com/ImYZF/p/4257389.html