想象一下这样的代码(这个例子有错误,但这只是为了澄清我的问题):
// In one code block...
const async1 = new Promise((resolve) => {
addListenerThatResolvesWhenAsync2Completes(resolve);
});
// Potentially, in another code block.
// Potentially, in a separate event loop iteration.
setTimeout(() => dispatchAsync2CompleteEvent(), delay); // this setTimeout "spawns" async2
async1
是一个承诺,async2
是一个setTimeout
async1
等待 async2
完成,但除此之外,它们是不相关的。如果这都是承诺,我就不需要问这个问题了。我认为如果我说“Promise 并行运行”,人们会理解我的意思。但据我了解,
setTimeout
- 因此 async2
- 不会创建 Promise。是否有一个术语表示“Promises 和 setTimeout
与不相关的调用堆栈并行运行?”如果这是另一种编程语言,我可能可以说“单独的线程”或“单独的进程”,但在给定的示例中,这些在技术上都不正确。
如果你想不太具体,就说“
异步任务”或“异步操作”,它们可以彼此并发运行。这意味着在(通常是线性的)链中产生的任何代码执行序列,形成具有结果的执行单元。
请注意,promise 不会“运行”,就像它们没有“执行”一样 - Promise 代表异步结果而不是可调用函数。