gpt4 book ai didi

javascript - 暂停函数以监听请求

转载 作者:行者123 更新时间:2023-12-03 04:15:28 24 4
gpt4 key购买 nike

我在 NodeJS 的函数内运行一个长循环,并且知道 JS 本质上不允许任何东西中断函数,我想知道它们是一种暂停函数执行以监听来自客户端的请求的方法我目前无法做到

最佳答案

您不能在函数执行时中断该函数。您需要做的是重构导致问题的循环。

您必须打破循环本身:

  • 每次迭代都应使用 setTimeout() 调用下一次迭代,而不是循环
  • 使用发电机。传入和传出生成器会破坏事件循环,并允许其他事件在其间执行。

这就是我使用 setTimeout 的意思:

给定功能:

function syncLoop(args) {
var localVar;
for (i = 0; i < max; i++) {
doSomething(args, localVar)
}
}

setTimeout(或setImmediate())替换循环,如下所示:

function asyncLoop(args) {
var localVar;
function innerLoop(i){ if(i < max){
doSomething(args, localVar)
setTimeout(function(){
i++; innerLoop(i);
}, 0);
} }
innerLoop(0);
}

这样,在每次迭代时,控制权都会传递给事件循环,并且可以服务其他独立的请求。

关于javascript - 暂停函数以监听请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44157023/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com