2014-11-06 45 views
0

使用從https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/EventLoop所述視覺表示:Javascript-setImmediate()與nextTick()是堆棧還是消息?

會的setImmediate()nextTick()之間的區別之一是setImmediate()地方在堆棧(當前運行的代碼)的代碼與nextTick()場所代碼中的下一個消息(隊列)中?

enter image description here

+0

你在說'node.js'運行時嗎?另外,這是一個dup:http://stackoverflow.com/a/15349865/798682? – mattr 2014-11-06 17:26:15

回答

1

號這兩種方法是異步的,這意味着該回調進至隊列和所述堆被單獨留下(不像彷彿它被稱爲右的距離)。

但是,setImmediatenextTick確實使用不同的隊列。他們有不同的執行週期,並且nextTick回調將在第一個setImmediate被調度之前被調用。有關詳細信息,另請參閱setImmediate vs. nextTick

+0

請解釋你的意思,他們使用不同的隊列。據我所知,事件循環只有一個這些api工作的隊列。 – dman 2014-11-06 19:07:57

+0

好吧,沒有。有[多個事件循環](http://stackoverflow.com/questions/10680601/nodejs-event-loop),你可以想到「在彼此內部運行」(技術上,它可能是一個單一的隊列但使用不同的插入方法)。正如鏈接問題所詳述的,'nextTick'回調將在IO回調之前運行。 – Bergi 2014-11-06 19:25:13