等待时这个函数发生了什么,它在任务列表中的什么位置。它在作业队列中吗? 它是如何触发的,它是排队还是已经在那里或以其他方式触发? 我知道它是如何工作的,这是一个测试示例。我的意思是从技术方面来说,这个等待循环是如何影响处理器的。它是否像自旋锁或互斥锁一样工作,以及它的一般情况。
var lock= new Promise((resolve)=>{})
async function loop() {
while(true) {
await lock
}
}
loop()
谢谢,抱歉,我正在使用翻译器
loop() 函数创建一个无限循环,等待 Promise 解决,然后再进行下一次迭代。 Promise lock 是使用 Promise 构造函数创建的,并且永远不会解析,因为 resolve 函数从未被调用过。
由于loop()函数是一个异步函数,它不会阻塞事件循环,可以认为是非阻塞的。当loop()被调用时,它会开始执行并进入死循环。由于 lock 是一个未解决的 Promise,循环将无限期地等待 Promise 解决。函数 loop() 是一个添加到任务队列中的任务,等待 Promise 锁解决。
如果 Promise 锁是在外部解析的,比如在 Promise 上调用 resolve(),循环会继续执行。否则,loop() 函数将保留在任务队列中,等待 Promise 解决。
综上所述,loop()函数是一个任务,它被添加到任务队列中,并会一直留在那里,直到Promise锁被解析。它在调用 loop() 函数时触发,并且 Promise 锁与 Promise 构造函数一起排队。