我编写了一个通用的waitFor函数,它将接受回调和等待时间,并等待它。根据我的理解和观察,我的代码会一直等待,然后报告状态。我希望在达到解决方案后清除超时。我该怎么做?
var _timer;
function waitForGeneric(method, max) {
var start = Date.now();
return new Promise((resolve, reject) => {
method();
function check() {
result = _connected;
if (result) {
console.log('connected to server[connection status]: ' + result);
window.clearTimeout(_timer);
resolve();
}
else {
if (Date.now() - start > max) {
console.log('waited for 30 seconds for connection[connection status]: ' + result);
reject();
}
else {
timer = window.setTimeout(check, 1000);
}
}
}
check();
});
}这是正确的吗?
发布于 2021-10-10 04:53:25
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/then
我要到明天才能对此做出进一步的回应,我也不一定有工具来测试你正在尝试做什么,以确保这就是你要做的……但是,如果您希望在promise解析后运行函数,则可以将.then()方法附加到promise实例。此外,对于您的特定情况,我可能是错误的,但我通常不会看到window.clearTimeout或window.setTimeout,而是它们只有各自的函数调用,如clearTimeout和setTimeout。
var _timer;
function waitForGeneric(method, max)
{
var start = Date.now();
return new Promise((resolve, reject) => {
method();
function check() {
result = _connected;
if (result) {
console.log('connected to server[connection status]: ' + result);
clearTimeout(_timer);
resolve();
}
else {
if (Date.now() - start > max) {
console.log('waited for 30 seconds for connection[connection status]: ' + result);
reject();
}
else {
timer = setTimeout(check, 1000);
}
}
}
check();
}).then(function() {
clearTimeout(_timer);
});
}
https://stackoverflow.com/questions/69511499
复制相似问题