Is there another way of achieving the same behavior of scheduling a callback function on the JavaScript's message queue to be run after the current stack is empty?
In other words, is there a way, be it with Promises or third-party packages to push a callback to the task queue so that it runs after the current stack is empty?
In other words, what are some equivalents/alternatives to passing 0 to setTimeout to take advantage of the asynchronous callback?
Answers for all environments and all ECMAScript versions are welcome.
In nodejs environment, you can do the async tasks in the following way.
Ref. https://nodejs.org/en/docs/guides/event-loop-timers-and-nexttick/
setImmediate(() => console.log("setImmediate"));
setTimeout(() => console.log("setTimeout"));
Promise.resolve().then(() => console.log("Promise"));
process.nextTick(() => console.log("nextTick"));
console.log("sync");
Output:
sync
nextTick
Promise
setTimeout
setImmediate
In modern browswer, you can do the async tasks in the following way.
setTimeout(() => console.log("setTimeout"));
Promise.resolve().then(() => console.log("Promise"));
console.log("sync");