德瑪西亞99
2019-03-03 12:50:13
按照《JavaScript高級(jí)程序設(shè)計(jì)》中關(guān)于定時(shí)器的描述,我覺得定時(shí)器也是需要等待之前事件隊(duì)列中的事件執(zhí)行完畢,才會(huì)執(zhí)行定時(shí)器任務(wù)。直到在看到《node.js高級(jí)編程》一書,上面有這么一段話process.nextTick不也是需要等待之前事件隊(duì)列中的事件執(zhí)行完畢,才會(huì)執(zhí)行回調(diào)函數(shù)嗎?為什么比定時(shí)器好呢?還有激活JavaScript的超時(shí)隊(duì)列是什么東西?跟事件隊(duì)列一樣嗎?
2 回答

拉風(fēng)的咖菲貓
TA貢獻(xiàn)1995條經(jīng)驗(yàn) 獲得超2個(gè)贊
"超時(shí)隊(duì)列是什么東西"
不就是setTimeout
嘍?。》g一下不就是“超時(shí)”嘛。
至于process.nextTick
為什么比setTimeout
塊,大概說下吧:
process.nextTick
把回調(diào)函數(shù)放到了事件隊(duì)列的頂部,于是,當(dāng)前同步代碼(牛人們常說的執(zhí)行棧)執(zhí)行完畢后,從事件隊(duì)列里挑回調(diào)函數(shù)時(shí),最先被挑中的就是他了。頂部好理解吧?多個(gè)異步任務(wù)丟到了事件隊(duì)列里,總有個(gè)先后的,頂部就是最前面。
setTimeout
比他慢好理解了么,這個(gè)東西再怎么設(shè)置超時(shí)時(shí)間為0
,在事件隊(duì)列里他也總在process.nextTick
的后面。
說的不是很專業(yè),但意思差不多了。如果需要更精準(zhǔn)答案,最好google一下,或者翻node源碼
添加回答
舉報(bào)
0/150
提交
取消