繁体   English   中英

Javascript:setTimeout:clearTimeout

[英]Javascript: setTimeout: clearTimeout

我写了一个通用的 waitFor function 它将接受回调和等待时间并等待它。 根据我的理解和观察,我的代码会一直等待,然后报告状态。 我想在解决问题后清除超时。 我怎么做?

    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();

    });
}

这样对吗?

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/then

直到明天我才能对此做出进一步回应,而且我不一定有工具来测试你正在尝试做的事情以确保这是你想要的......但是如果你想运行a function promise解析后,可以在promise实例上附加.then .then()方法。 另外,对于您的具体情况,我可能是错误的,但我通常看不到window.clearTimeoutwindow.setTimeout ,而是它们只是将各自的 function 调用作为clearTimeoutsetTimeout

 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); }); }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM