NodeJS 0.11은 물론 io.js와 Node 0.12 브랜치가 모두 기본 약속과 함께 제공됩니다.Promise.resolve(). then vs setImmediate vs nextTick
미래의 이벤트 루프 사이클에서 항상 실행되는 고유 약속 have a .then
method.
지금까지 내가 이벤트 루프의 다음 반복에 일을 큐에 setImmediate
을 사용하고 지금까지 나는에게 이후 switched from nextTick :
Promise.resolve().then(deferThisToNextTick);
:
setImmediate(deferThisToNextTick); // My NodeJS 0.10 code
process.nextTick(deferThisToNextTick); // My NodeJS 0.8 code
우리는 지금이 작업을 수행 할 수있는 새로운 방법을 가지고 있기 때문에
어떤 것을 사용해야합니까? 또한 - 은 Promise.resolve.then
입니다. 이벤트 루프 전후에 실행되는 코드는 setImmediate
또는 nextTick
과 비슷합니까?
일부 연구 공유 : Chromium - 약속은 마이크로 태스크를 대기열에 넣습니다. 여기에서 마이크로 태스크 실행 https://github.com/yoavweiss/Blink/blob/80ec93f1d58a0a0ce99a07ed07c203a106b2a88c/Source/core/dom/Microtask.cpp 스크립트 도착시 여기로 전화 함 또는 확인하고 스크립트가 실행되고 있지 않습니다. https://github.com/yoavweiss/Blink/blob/5be896b969d644c18faccb07f43ae086/Source/core/html/parser/HTMLScriptRunner.cpp –
약속의 해결책 https://github.com/joyent/node/blob/857975d5e7e0d7bf38577db0478d9e5ede79922e/deps/v8/src/promise.js#L154 - 전화 https://github.com/joyent/node/blob/857975d5e7e0d7bf38577db0478d9e5ede79922e/deps /v8/src/execution.cc#L321 - 도착 https://github.com/joyent/node/blob/857975d5e7e0d7bf38577db0478d9e5ede79922e/deps/v8/src/execution.cc#L310 –
매우 관련 : https : // github. com/joyent/node/issues/7714 –