如何导出多重承诺的返回值。我需要将两个数据从第一个API导出到第二个API数据。这意味着将第一个数据插入一个数组,然后再将第二个数据插入该数组,然后从另一个.js文件中导出并使用。
我试图搜索如何在then()方法中返回值。但是,当我将导入的文件调用到另一个.js文件时,它会记录 [Promise,Promise,Promise ...]
API.js
function getAllData(url) {
return axios.get(url, {
headers: {
"Accept": "application/json; odata=verbose"
}
}).then(response => response.data.d.results);
}
function getAllDataVHistory(data) {
return data.map(i => axios.get(`urltwo?getID${i.Id}`).then(response => {
return response.data;
}));
}
export const final = () =>
getAllData(`urlone`)
.then(data => getAllDataVHistory(data));
Display.js
import {
final
} from "./API.js";
final().then(en => {
// return new Promise((resolve, reject) => {
// if (true) {
// return resolve(console.log(en));
// } else {
// return reject("promise failed");
// }
// });
console.log(en);
});
Console.log结果
(3) [Promise, Promise, Promise]
答案 0 :(得分:1)
return data.map(i => axios.get(`urltwo`)
这将返回一个 promise数组
由于您要兑现承诺,因此您将获得该数组(因此,您在日志中看到的内容)。
您需要返回一个单个承诺,这样该承诺才能被采用。
Use Promise.all(array_of_promises)
创建一个可以在数组中的所有promise都解决后解决的promise。