gpt4 book ai didi

javascript - 使用 typeof 等待直到变量存在会导致无限循环

转载 作者:数据小太阳 更新时间:2023-10-29 04:06:51 26 4
gpt4 key购买 nike

我需要一个等待变量出现的函数。

function wait(variable, callback) {
if (typeof variable !== "undefined")
callback();
else
setTimeout(function () {
wait(variable, callback);
}, 0)
}

使用下面的示例代码调用此函数会导致无限循环。

var a;
wait(a, function(){console.log('success')});
setTimeout(function(){a=1}, 1000)

为什么?

最佳答案

JavaScript 是 pass by value ,因此当您将 a 传递给 wait 时,您只需传递值 undefined

您可以尝试为等待条件传递一个函数:

var a;
console.log('started');
wait(function(){return a}, function(){console.log('success')});
setTimeout(function(){a=1}, 1000)

function wait(condition, callback) {
if (typeof condition() !== "undefined") {
callback();
} else {
setTimeout(function () {
wait(condition, callback);
}, 0)
}
}

您还可以扩展此方法,使其不仅等待变量存在,还可以等待它具有特定值或其他内容。

如果您使用 NPM 和 promises,已经有一个库可以做到这一点:wait-until-promise .可能还有其他人也使用经典回调。

关于javascript - 使用 typeof 等待直到变量存在会导致无限循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41328534/

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