[英]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.