繁体   English   中英

这是对 async/await 的正确理解吗?

[英]Is this a correct understanding of async/await?

 function injectText(value, selector) { return new Promise((resolve, reject) => { setTimeout(() => { document.querySelector(selector).innerHTML = value resolve() }, 500) }) } async function printWord(word, selector) { for (let i = 0; i < word.length; i++) { await injectText(word.substring(0, i + 1), selector) } } async function run() { await printWord('Hello', '.hello') await printWord('there,'. '.there') } run()
 <div class="hello"></div> <div class="there"></div>

我已经使用 Promise 和 async/await 来打印Hello there! 一封接一封的邮件,延迟为 500 毫秒。 它按预期工作,但是,我不确定我是否理解 function run()执行时会发生什么。

  1. await之前printWord意味着暂停执行async函数run ,直到 Promise 被解决或拒绝。

  2. Function printWord是一个异步 function。 我没有从中返回任何内容,因此在 function 运行结束时返回undefined 异步函数总是返回 Promises,因此,它会自动返回 Promise 自动解析为undefined的值? 这是怎么回事?

  3. 然后它跳到第二个await printWord应用相同的逻辑。

我理解正确吗? 我感谢您的帮助。

  1. 是的,只要有await处理, run()函数的执行就会暂停。 function 将在自行解决之前暂停其执行两次。
  2. 是的,异步 function 确实返回 Promise; 但是,请意识到 promise 会解决,并且它们不会返回 至少,在 javascript 中(因为 async/await 只是 Promises 的糖)他们并没有真正返回,但他们解决了。
  3. 是的。

暂无
暂无

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

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