【发布时间】:2019-11-11 20:45:50
【问题描述】:
如何导出多重承诺的返回值。我需要将两个数据从第一个 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]
【问题讨论】:
-
即使我删除了 return new Promise 仍然会记录 (3) [Promise, Promise, Promise], @TheReason
-
没有top-level await,你不能导出结果值,只能导出promise。只需等待导入模块的文件中的承诺。
-
你想在你的承诺数组上使用
Promise.all -
但我需要使用第一个 API 的数据,因为 id 在第一个 API 中,例如
data.map(i => axios.get(urltwo?getID${i.Id})@Bergi -
@junreyd 从第一个 API 获取数据并将其传递到第二个 API 已经开始工作了。您的问题只是
getAllDataVHistory中的一系列承诺。
标签: javascript jquery promise axios es6-promise