'use strict'; const fs = require('fs'); // 模拟异步 console.time('setout'); setTimeout(function(){ console.timeEnd('setout'); },0); setImmediate(function(){ console.log('setImmediate'); }) process.nextTick(function(){ console.log('process.nextTick'); }) //用于阻塞主线程 for(var i=0;i<10000000;i++){} console.log('for循环之后'); //异步读取文件 fs.readFile('./1.txt','utf8',function(err,data){ if(err){ return console.log('读取错误啦'); } fs.writeFile('./11.txt',data,'utf8',function(err){ if(err){ return console.log('写入错误啦'); } console.log('异步读取完成'); }) }) // 同步读取文件 fs.readFileSync('./1.txt'); console.log('同步读取文件结束'); 其执行结果是: for循环之后 同步读取文件结束 process.nextTick setout: 15.483ms setImmediate 异步读取完成 总结: 虽然代码是从上到下依次执行,但是遇到有异步操作的时候,就会把异步操作放入事件队列中进行事件循环。 同步操作会在主线程上进行,虽然同步读取文件被放到了代码的最后, 但是从结果看还是提前执行。同时,异步中的 process.nextTick() 操作,优先级最高,它会优先被执行
node中的异步
最新推荐文章于 2024-07-29 20:46:51 发布