gpt4 book ai didi

javascript - 在基于 promise 的循环中避免递归堆栈溢出?

转载 作者:搜寻专家 更新时间:2023-10-31 22:48:08 24 4
gpt4 key购买 nike

<分区>

作为一个简单的示例程序,我有一个连续 ping 服务器的 Node 脚本,并希望这个程序运行很长时间。

该程序被设置为一个返回 promise 对象的 ping 函数。根据 ping 是否成功, promise 被解决或拒绝。

我希望这个函数在一个循环中运行,所以无论 ping 是否成功,下一个 ping 都会在上一个请求之后一段时间后触发已解决。

问题不是这个任务本身,而是我担心我的实现。我相信它最终会导致堆栈溢出。

这里有一些代码可以看看发生了什么:

function doPing(host) {
// returns a promise object.
}

function doEvery(ms, callback, callbackArgs) {

setTimeout(function() {

callback.apply(null, callbackArgs)
.always(function() {

doEvery(ms, callback, callbackArgs);

});

}, ms);

}

doEvery(1000, doPing, [host]);

我试图限制代码以反射(reflect)以下问题的范围:

这最终会导致堆栈溢出吗?是否有一种模式可以在使用 promises 时防止基于回调的循环溢出?

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