【发布时间】:2020-05-17 06:04:52
【问题描述】:
我有这个功能:
const buildDataSource = (): Promise<Data> => {
const data = fetch('https://jsonplaceholder.typicode.com/posts')
.then((response) => response.json())
.then((items) => items.map((item: RawDataItem, idx: number) => ({
key: idx,
randStr: item.title.substring(1, 24),
})));
return data;
};
然后用这个来称呼它:const data = buildDataSource();
但data 是一个已解决的承诺,它包含数据,而不是数据本身。我哪里错了?
【问题讨论】:
-
这就是异步编程在 JavaScript 中的工作方式。你必须
.then你在任何地方使用它返回的Promise。 -
fetch是异步的并返回promise。您应该使用then来操作data或考虑使用async functions -
不能让异步数据同步返回。
标签: javascript reactjs typescript