在Javascript中,我遇到了一个通过创建批处理过程的示例
在伪代码中使用Promise.resolve().then(runDownTheQueue)
的异步调用看起来像:
function queueEverythingUp (addMeToQueue) {
if (queueIsEmpty) {
Promise.resolve().then(runDownTheQueue);
}
addToQueue(addMeToQueue);
}
这只是设置要在队列中运行的批次的方法。
我的问题是,Promise的使用与异步调度的这种方法有何不同:
function queueEverythingUp (addMeToQueue) {
if (queueIsEmpty) {
setTimeout(() => {runDownTheQueue()}, 0);
}
addToQueue(addMeToQueue);
}
在这两种情况下,似乎都是异步延迟执行向下运行队列,直到通过对queueEverythingUp的同步调用建立队列。
Promises和setTimeout如何与Javascript引擎交互的内部工作的唯一区别是什么?