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