想象一下这样的代码(这个示例错误,但这只是为了澄清我的问题):
// 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
- 并没有创造一个承诺。是否有一个术语表示“Promises 和 与setTimeout
不相关的调用堆栈并行运行?”
如果这是另一种编程语言,我可能可以说“单独的线程”或“单独的进程”,但在给定的示例中,这些在技术上都不正确。
术语“线程”和“进程”是指特定的操作系统资源(或运行时,对于虚拟机管理的线程)。
如果你想不太具体,就说“异步任务”或“异步操作”,它们可以相互并发运行。这意味着在(通常是线性的)链中产生的任何代码执行序列,形成具有结果的执行单元。
请注意,Promise 不会“运行”,就像它们没有“执行”一样 - Promise 代表异步结果而不是可调用函数。