NodeJs异步的执行过程

我这里写了一个代码片段,用来模拟一个嵌套的异步过程,下面我总结了下这段代码的执行顺序var fs = require("fs");

fs.stat('a.txt',callbackOne(err,stat){
    //执行callbackOne回调函数
    if(err){
        fs.readFile("aa.txt",readFileCallbackOne(err,stat){
            //执行readFileCallbackOne回调函数
       })
   }
   //说明1
})
fs.stat('b.txt',callbackTwo(err,stat){
   //执行callbackTwo回调函数
    if(err){
        fs.readFile("bb.txt",readFileCallbackTwo(err,stat){
             //执行readFileCallbackTwo回调函数
       })
   }
   //说明2
})
//说明0

  代码自上而下执行,由于异步操作所以代码在执行到两个读取文件函数的时候会先把两个时间放入事件队列中,直接执行到"说明0"的位置:

此时事件队列中的事件:

callbackOne

callbackTwo

      当执行到"说明0"的位置的时候,nodejs此时会去执行callbackOne,callbackOne里面把文件读完后也会有一个回调事件,此时放入事件队列,事件队列中的事件:callbackOne callbackTwo readFileCallbackOne,此时会走到"说明1"的位置,表示callbackOne执行完成:

此时事件队列中的事件:

callbackTwo

readFileCallbackOne

      此时开始进入callbackTwo中执行,在执行callbackTwo的时候回有一个回调readFileCallbackTwo,此时继续放入事件队列中,

事件队列中的事件:callbackTwo readFileCallbackOne readFileCallbackTwo,此时代码走到"说明2"的位置,表示callbackTwo执行完成:

此时事件队列中的事件:

readFileCallbackOne 

readFileCallbackTow

      然后再去一次执行事件队列中的事件,从而完成整个流程.     

 



 

转载于:https://www.cnblogs.com/yk123/p/7119296.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值