我這裡寫了乙個**片段,用來模擬乙個巢狀的非同步過程,下面我總結了下這段**的執行順序var fs = require("fs");
fs.stat('a.txt',callbackone(err,stat))}//說明1
})fs.stat('b.txt',callbacktwo(err,stat))
}//說明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 模擬非同步執行,模擬線程暫停
模擬非同步執行,模擬線程暫停,這裡使用了 es7 中的async 和 await,如下 1 模擬線程暫停 2 const sleep function time time 7 8return promise 9 1011 async function asynctest i 16 i 17 awai...
nodejs的非同步呼叫
promise乙個標準,它描述了非同步呼叫的返回結果,包括正確返回結果和錯誤處理。關於詳細的說明文件可以參考promises a 目前實現promise標準的模組有很多,如q bluebird和deferred,下面我們以q為例,介紹一下promise在nodejs中的使用方法。我查詢了關於prom...
nodeJS中的非同步程式設計
nodejs 不是單執行緒 在部落格專案中關於非同步問題 1.當使用者新增一條部落格時 需要通過post方式向伺服器傳送資料 後台獲取使用者以post方式拿到傳送過來的資料 然後存入資料庫 上面的 建立乙個空字串 當使用者向伺服器傳送請求時出發data事件將依次獲取來資料進行拼接 當使用者請求結束後...