【发布时间】:2018-07-16 02:50:15
【问题描述】:
下面是我的功能
async function test() {
const data= [];
for (let i = 0; i <= 5; i = i + 1) {
const payload: any = await postExampleApi(i);
data.push(payload);
}
return data;
}
export const getData = test().then((data) => {
console.log(data);
return data;
});
我尝试使用不同的参数(数字 0 - 5)每次调用 api 六次。
我可以从 console.log 获取我的数据数组,但是,当我从另一个文件导入这个 getData 函数时,我总是得到一个 Promise{...} 而不是数据数组。
我是不是做错了什么?
【问题讨论】:
-
你为什么认为你不应该得到承诺?
-
因为 async on function 保证函数返回 Promise - 它在 documentation 中 - 哦,是的,当涉及异步代码时你不能返回同步值 - Promise 不要让异步代码同步
-
请显示导入
getData()并调用它的代码。 -
好像你想把函数结果
data保存到getData。到目前为止,还没有简单的方法可以从异步函数的结果中导出。您想要的是导出test函数,然后在需要数据时导入并调用await test()之类的函数。 -
@JaromandaX 我们实际上可以使用一些讨厌的 while 循环返回一个同步值。
标签: javascript reactjs