node.js中的forEach()是同步还是异步呢


node里几乎所有用到回调函数的地方,都是异步的,回调函数后面的代码很可能比回调函数中的代码后先执行,特别是数据库操作。当然,node也提供了同步版本的函数,例如文件操作,fs.readFileSync()是fs.readFile()的同步版本。

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

var arr = ['a', 'b', 'c'];

 var str = '123';

 arr.forEach(function(item) {

   str += item;

   while (true) {};  //用一个死循环,卡死它~~

 });

 console.log(str);

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

所以说,node里的forEach()是同步的!!

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

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

本作品由http://www.cnblogs.com/ImYZF创作

Node.js事件循环(Event Loop)和线程池详解
Node的事件循环(EventLoop)是它能够处理大并发、高吞吐量的核心。这是最神奇的地方,据此Node.js基本上可以理解成单线程,同时还允许在后台处理任意

Node.js中child_process实现多进程
varhttp=require('http');functionfib(n){if(n2){return1;}else{returnfib(n-2)+fib(n-1);}}varserver=http.createServer(function(req,res){varnum=parseInt(req.url.substring(1),10);res.writeHead(200);res.end(

nodejs 整合kindEditor实现图片上传
kindEditor官网上中提供了ASP,ASP.NET,JSP相关的整合应用,http://kindeditor.net/docs/upload.html可以参照实现nodejs的整合,发现实用nodejs更简单环境:unbuntu14.10nodejs0.10.35e