nodejs readfile是同步的还是异步的

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了nodejs readfile是同步的还是异步的相关的知识,希望对你有一定的参考价值。

参考技术A 你好,js是同步执行的,一个简单示例解释, for(var i = 0;i < 10;i++) console.log(i)for(var i = 10;i < 20;i++) console.log(i)以上两个for循环,第一个打印1-10,第二个打印10-20,结果是1-20按顺序输出 js中代码是同步执行的,只有在ajax的...

nodejs是同步还是异步

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的时候,没有考虑过这个问题,按同步的写了,写突然想到,测试后虚惊一场,以为以前的代码都写错了。
参考技术A

既可以同步也可以异步

同步:

var fs = require("fs");var data = fs.readFileSync('input.txt');console.log(data.toString());console.log("程序执行结束!");

异步:

var fs = require("fs");fs.readFile('input.txt', function (err, data) 
    if (err) return console.error(err);
    console.log(data.toString()););console.log("程序执行结束!");

参考技术B 很经典的异步

以上是关于nodejs readfile是同步的还是异步的的主要内容,如果未能解决你的问题,请参考以下文章

如何优雅的处理Nodejs中的异步回调

nodejs 文件系统

nodejs 中的异步之殇

node.js中的forEach是同步还是异步

文件系统(node.js学习笔记)

Nodejs 处理异步(获取异步数据并处理)的方法