找不到相同的解决方案,因此向大家寻求帮助。
我有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内的方法。
任何帮助将不胜感激!!
答案 0 :(得分:0)
实际上,以上代码完全正确,promise可以按预期工作。问题出在我正在使用的Plugin Java代码中。