在 JavaScript 中,“不相关的异步调用堆栈”的技术名称是什么?我想说,“我如何等待一个不相关的 ___ 完成?”

问题描述 投票:0回答:1

想象一下这样的代码(这个例子有错误,但这只是为了澄清我的问题):

// 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
  1. async1
    是一个承诺,
    async2
    是一个
    setTimeout
  2. 两者都是异步的。
  3. 它们存在于不同的链中;
    async1
    等待
    async2
    完成,但除此之外,它们是不相关的。

如果这都是承诺,我就不需要问这个问题了。我认为如果我说“Promise 并行运行”,人们会理解我的意思。但据我了解,

setTimeout
- 因此
async2
- 不会创建 Promise。是否有一个术语表示“Promises 和 setTimeout
 与不相关的调用堆栈并行运行?”

如果这是另一种编程语言,我可能可以说“单独的线程”或“单独的进程”,但在给定的示例中,这些在技术上都不正确。

javascript terminology
1个回答
0
投票
术语“线程”和“进程”是指特定的操作系统资源(或运行时,对于虚拟机管理的线程)。

如果你想不太具体,就说“

异步任务”或“异步操作”,它们可以彼此并发运行。这意味着在(通常是线性的)链中产生的任何代码执行序列,形成具有结果的执行单元。

请注意,promise 不会“运行”,就像它们没有“执行”一样 - Promise 代表异步结果而不是可调用函数。

© www.soinside.com 2019 - 2024. All rights reserved.