这就是我试图通过JSON.stringify(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类。我真的不知道为什么gamesList包含Promise对象,因为func返回一个包含字典/地图的列表。 getGamesList
是一个异步函数阅读MDN JS文档,它看起来像Promise.all
是我想要的,但idk如何在已解析的promise中访问已解析的值。
我正在使用带有一个导入文件FileSaver.js的vanilla JS
gamesList
是一系列的承诺。如果你做JSON.stringify(new Promise())
它将打印{}
,因为它是一个对象。 Promise.all
将接受一系列承诺,它将解析所有承诺并调用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]
})