2 Promise中的SetTimeOut方法不起作用

时间:2019-02-28 10:28:31

标签: javascript

找不到相同的解决方案,因此向大家寻求帮助。

我有2个JS方法,需要连续调用一个特定的时间间隔,因此要实现这一点,我使用了SetTimeout,如下所示,但它似乎不起作用,仅调用了第二个setTimeout。理想情况下,我希望在提到的时间之后都可以调用这两种方法。

我的代码:-

var statusPromise = new Promise(function(resolve, reject) {
    setTimeout(function() {
        plugin.dcsHelper.getMeterStatus(function(data) {
            plugin.dcsHelper.log("INFO", "Status: " + JSON.stringify(data));
            if (data && data.status) {
                resolve(data.status);
            }
        }, function(err) {
            plugin.dcsHelper.log("ERROR", "Error while polling: " + JSON.stringify(err));
        });
    }, 1000);
});

var progressPromise = new Promise(function(resolve, reject) {
    setTimeout(function() {
        plugin.dcsHelper.getProgress2(function(data) {
            plugin.dcsHelper.log("INFO", "Value: " + JSON.stringify(data));
            if (data && data.val) {
                resolve(data.val);
            }
        }, function(err) {
            plugin.dcsHelper.log("ERROR", "Error while polling: " + JSON.stringify(err));
        });
    }, 5000);
});

Promise.all([statusPromise, progressPromise]).then(function(values) {
    console.log(values);
});

在这里,只会调用progressPromise内的方法,而不会调用statusPromise内的方法。

任何帮助将不胜感激!!

1 个答案:

答案 0 :(得分:0)

实际上,以上代码完全正确,promise可以按预期工作。问题出在我正在使用的Plugin Java代码中。