node.js里的forEach()也是异步的吗?
博客已经迁移到www.imyzf.com,本站不再更新,请谅解!
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); //本文来自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 国际许可协议进行许可。
node.js里的forEach()也是异步的吗?的更多相关文章
- 理解 Node.js 里的 process.nextTick()
有很多人对Node.js里process.nextTick()的用法感到不理解,下面我们就来看一下process.nextTick()到底是什么,该如何使用. Node.js是单线程的,除了系统IO之 ...
- 转 node.js里面的http模块深入理解
问题1:HTTP服务继承了TCP服务模型,是从connection为单位的服务到以request为单位的服务的封装,那么request事件何时触发? 注意:在开启keepalive后,一个TCP会话可 ...
- node.js里的buffer常见操作,copy,concat等实例讲解
//通过长度构建的buffer内容是随机的 var buffer=new Buffer(100); console.log(buffer); //手动清空buffer,一般创建buffer不会清空 b ...
- node.js里npm install --save 与 npm install --save-dev 的区别
在package.json可以看到一个放在package.json 的dependencies , 一个放在devDependencies里面. 目前找到的一些解答:真正跑在用户浏览器中的代码,比如j ...
- Node.js 进程
process 是全局对象,能够在任意位置访问,是 EventEmitter 的实例. 退出状态码 当没有新的异步的操作等待处理时,Node 正常情况下退出时会返回状态码 0 .下面的状态码表示其他状 ...
- Node.js 101(2): Promise and async
--原文地址:http://blog.chrisyip.im/nodejs-101-package-promise-and-async 先回想一下 Sagase 的项目结构: lib/ cli.js ...
- Node.js的线程和进程
http://www.admin10000.com/document/4196.html 前言 很多Node.js初学者都会有这样的疑惑,Node.js到底是单线程的还是多线程的?通过本章的学习,能够 ...
- Node.js面试题:侧重后端应用与对Node核心的理解
Node是搞后端的,不应该被被归为前端,更不应该用前端的观点去理解,去面试node开发人员.所以这份面试题大全,更侧重后端应用与对Node核心的理解. node开发技能图解 node 事件循环机制 起 ...
- Node.js 薄荷网爬取
Node.js:是一个基于前端的服务器,主要的特点:单线程,异步I/O(对这个没有了解,开发起来真的会踩很多坑),事件驱动 前言:本人主要是一个以使用.Net平台下的语言,进行开发的一个菜鸡,之前面试 ...
随机推荐
- 查看Linux主机CPU及内存信息
查看CPU信息(型号) # cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c 8 Intel(R) Xeon(R) CPU ...
- android122 zhihuibeijing 主页面使用fragment搭建
fragment的生命周期: onAttach()当fragment添加进Activity的时候调用(这个时候Activity对 ...
- C#_datatable_读取
private void button5_Click(object sender, EventArgs e) { string 价格编号 = txtnum.Text; if (价格编号!= " ...
- Oracle database server 安装tips
需要手动解压第二个包的文件合并到第一个包的相同目录中. 以12c为例,需要把 winx64_12102_SE2_database_1of2.zip和winx64_12102_SE2_database_ ...
- JForum 2.19源码部署到eclipse
前两天在研究免费论坛,通过oschina和相关的文档查阅,最终选择了jforum,首先他是java写的,其次方便二次开发,而且有些论坛的源码都已经不在维护了,jforum最近几个月还是有更新的,但是从 ...
- View绘制详解,从LayoutInflater谈起
自定义View算是Android开发中的重中之重了,很多小伙伴可能或多或少都玩过自定义View,对View的绘制流程也有一定的理解.那么现在我想通过几篇博客来详细介绍View的绘制流程,以便使我们更加 ...
- 例3-12opencv设置ROI感兴趣区域
前面说了一堆,也不知道啥用,感觉也没说清楚,可能确实需要一些例子来显性表示一下,或者他们在当初出版书籍针对的人群已经有了对图像的基本认识,然而自己还是没有建立起来,往后看看吧,希望能比较清楚的自己处理 ...
- svn has stoped working
各种问各种搜 ,看来还得靠自己,,,,下面是解决方案; 如果你出现这种情况, 右键点击svn的选项,就弹出这个框框,,,,点击svn里的哪个选项都是弹出这个框框,,,,重新安装,重启,换各种版本安 ...
- 用js实现选项卡切换效果
这是要实现的效果图: 一.HTML页面布局 <!-- HTML页面布局 --><ul class="tab_menu"> <li class=&quo ...
- C++多态性与C#的比较
多态性:统一操作作用于不同的对象可以有不同的解释,产生不同的执行结果.多态性可以分为两种:一是编译时的多态性,一是运行时的多态性. 编译时的多态性包括重载.覆盖.运算符重载.对于非虚的 ...