【问题标题】:What does await functionawait 有什么作用
【发布时间】:2023-02-26 07:52:45
【问题描述】:

这个函数在等待时发生了什么,它在任务列表中的什么位置。它在作业队列中吗? 它是如何触发的,它是排队还是已经在那里或以其他方式触发?

var lock= new Promise((resolve)=>{})

async function loop() {

    while(true) {
    await lock
}

}
loop()

谢谢,抱歉,我正在使用翻译器

【问题讨论】:

    标签: javascript async-await event-loop


    【解决方案1】:

    loop() 函数创建一个无限循环,等待 Promise 解决,然后再进行下一次迭代。 Promise lock 是使用 Promise 构造函数创建的,并且永远不会解析,因为 resolve 函数从未被调用过。

    由于 loop() 函数是一个异步函数,它不会阻塞事件循环,可以认为是非阻塞的。当loop()被调用时,它会开始执行并进入死循环。由于 lock 是一个未解决的 Promise,循环将无限期地等待 Promise 解决。函数 loop() 是一个添加到任务队列中的任务,等待 Promise 锁解决。

    如果 Promise 锁是在外部解析的,例如,通过在 Promise 上调用 resolve(),循环将继续执行。否则,loop() 函数将保留在任务队列中,等待 Promise 解决。

    总而言之,loop() 函数是一个任务,它被添加到任务队列中,并会一直保留在那里,直到 Promise 锁被解析。它在调用 loop() 函数时触发,并且 Promise 锁与 Promise 构造函数一起排队。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-09-27
      • 2019-01-18
      • 2020-01-24
      • 2017-12-30
      • 2016-08-20
      • 2021-08-25
      • 1970-01-01
      相关资源
      最近更新 更多