簡體   English   中英

如何在Promise函數JavaScript內的數組中推送項目

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM