Promise.resolve()。then()与调度异步任务的setTimeout之间的区别是什么?

时间:2018-03-26 15:38:00

标签: javascript queue settimeout es6-promise

在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引擎交互的内部工作的唯一区别是什么?

0 个答案:

没有答案