将 promise 视为“执行”会让您感到困惑。 Promise 纯粹是一种通知机制。它通常与一些底层异步操作相关联,当您创建 promise 时,通常会启动异步操作。
Promise.all()然后用于跟踪 的一大堆异步操作。你已经开始了已完成(或以错误结束)。
所以,你不要使用 Promise.all()开始一堆事情。您使用它只是为了跟踪它们何时全部完成以及它们何时在您的代码中的其他地方启动。
当您使用 new Promise() 手动创建 promise 时, promise 执行者立即执行。这就是它们的设计方式。
如果你在你的 promise 执行器中有真正的异步操作并且你正在做 console.log()当这些操作完成后,您可能不会发现如何设计 Promise 有任何问题。我认为您的大部分困惑源于您的 promise 执行程序中实际上没有任何异步操作,因此实际上没有理由为此使用 promise 。 Promise 旨在跟踪异步操作的完成情况。如果您没有实际的异步操作,则没有理由使用它们。
仅供引用,如果您想在 future 某个时间从 Promise 执行器内部启动一些异步操作,您可以使用正常的 setTimeout()或 process.nextTick()或 setImmediate()操作以安排操作稍后开始。
网友评论