繁体   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