首页 > 代码库 > NodeJs异步的执行过程
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
然后再去一次执行事件队列中的事件,从而完成整个流程.
NodeJs异步的执行过程
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。