[英]How to push items in an array inside a promise function JavaScript
我想将结果从promise函数推入数组,但是,该数组仍然为空。 有人可以帮忙吗, 这是我最后要实现的,从promise函数更新我的ejs文件。 但是,一旦执行此操作,将不会发生任何事情。
var Data = [];
raw.forEach(function (host) {
ping.promise.probe(host.ip).then(function (res) {
if(res.alive){
const input = {
"Host": i.host,
"IP": i.ip,
"Status": "Alive",
"Avg": res.avg
}
Data.push(input);
}
else {
const input = {
"Host": i.host,
"IP": i.ip,
"Status": "Dead",
"Avg": res.avg
}
Data.push(input);
}
});
});
console.log(Data);
它似乎是空的,但实际上不是。 Promise是异步的,这意味着在设置了.catch
的上下文中的代码将继续运行, then
子句仅在.catch
被解决(或.catch
如果被拒绝)时执行。
你做这个:
...promise.then( (res) => { data.push(res); } );
conosole.log(data);
但是console.log
是在承诺被解决之前执行的, then
执行then
子句。 如果将console.log(data)
移到console.log(data)
内.then
则会注意到其中填充的:)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.