繁体   English   中英

TypeScript/JavaScript 或 Python 中的 await/async 程序的执行流程是什么?

[英]What is the execution flow of an await/async program in TypeScript/JavaScript or Python?

有一段时间我知道我试图围绕 async/await 的内部结构来思考。 我是一名 C++ 开发人员,专注于多线程,这个概念会干扰 C++ 程序的执行方式。

我确实了解 Promise 对象,并且强调并发=并行性。 还有事件循环? 我可以按照要求拥有一个单线程应用程序,该应用程序同时执行程序的不同部分,但是什么在事件循环上“创建”了一个事件? Promise object 吗? 还是async关键字? 还是某些 I/O 函数中的某些东西不阻塞?

我知道的最接近的概念是 Python 中的全局解释器锁,其中多个线程等待全局锁,因此 Python 以循环方法执行,让每个线程执行一段代码。 但是这个概念不需要事件循环,例如在 JS/TS 中只涉及一个线程。

任何人都可以帮助我(或推荐一个好的资源),这样我就可以理解执行流程或如何理解这一点? 太感谢了!

如果您了解 promise 那么 async await 只是语法糖。

async function() {
  doStuff();
  const x = await getSomePromise();
  doStuffWithX(x);
}

是相同的

function() {
  doStuff();
  getSomePromise().then(function(data) {
    const x = data;
    doStuffWithX(x);
  });
}

解释器为您执行回调包装。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM