我正在编写连接到API的节点代码,以获取一些数据。我使用JS Promise来调用API并获取解析部分的数据。现在,我需要调用不同的端点以获取完整的数据。所以我最终选择了Promise.all。但是我不能使它工作。我读到异步函数也返回一个Promise。因此,也许我的代码无法正确处理async / Promise方法。
我用一个类似的代码做了一个Codepen。我无法写入最后的日志。解决Promise.all时写入此日志...
const getEntitiesData = async function () {
await getEntities().then(function (response) {
console.log("All entities: " + response.join(", "));
const entitiesData = response.map(function (entity) {
getEntityData(entity).then(function (response) {
console.log("Entity data: " + JSON.stringify(response));
});
});
return entitiesData;
});
};
const getEntities = function () {
return new Promise((resolve, reject) => {
console.log("Getting all entities");
setTimeout(resolve, 3000, [1, 2, 3, 4]);
});
};
const getEntityData = function (id) {
return new Promise((resolve, reject) => {
console.log(`Getting entity ${id} data`);
setTimeout(resolve, id*1000, { id: id, ref: "!"+id });
});
};
const data = getEntitiesData();
Promise.all(data).then(function (response) {
console.log("All Data get: " + response);
});
谢谢你的帮助。我想念什么?