繁体   English   中英

如何在Promise JS中将Promise数组转换为每个Promise解析的值的数组?

[英]How do I convert an Array of Promise to an Array of the values resolved from each Promise in vanilla JS?

这就是我试图通过JSON.stringify(gamesList);进行序列化的JSON.stringify(gamesList);

[{},{},{},{},{},{},{},{}]

以下是console.log(gamesList);打印输出console.log(gamesList); 在此处输入图片说明

这是我的代码的一部分:

let gamesList = [];
while (hasNextPage(true)) {
    let list = getGamesList();
    gamesList = gamesList.concat(list);
}

console.log(gamesList);
Promise.all(gamesList).then((value) => {
    saveAs(
        new Blob([JSON.stringify(gamesList)]),
        'Humble_Bundle_Games.json'
    );
});

我是JS的新手,并且使用了异步代码和Promise类。 我真的不知道为什么gameList包含Promise对象,因为func返回包含字典/地图的列表。 getGamesList是一个异步函数,它读取MDN JS文档,看起来像Promise.all就是我想要的,但是idk如何在已解决的Promise.all中访问已解决的值。

我正在将Vanilla JS与一个导入文件FileSaver.js一起使用

完整的源代码

gamesList是一个诺言数组。 如果执行JSON.stringify(new Promise()) ,它将打印{}因为它是一个对象。 Promise.all将采用Promise.all数组,它将解析所有promise并调用then方法的回调并传递已解析的值。

您的代码将成为

let gamesList = [];
while (hasNextPage(true)) {
    let list = getGamesList();
    gamesList = gamesList.concat(list);
}

console.log(gamesList);
Promise.all(gamesList).then((value) => {
    saveAs(
        value, // it contains array of all resolved values
        'Humble_Bundle_Games.json'
    );
});

只是为了了解承诺的概念:

 var a = new Promise((resolve, reject) => { setTimeout(() => { resolve(10) }, 100) }) var b = new Promise((resolve, reject) => { setTimeout(() => { resolve(20) }, 200) }); var arr = [a, b]; Promise.all(arr).then(value => { console.log(JSON.stringify(arr)) // It will print [{},{}] console.log(JSON.stringify(value)) // It will print [10,20] }) 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM