[英]What is the order of execution/control flow of "await" in javascript?
[英]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.