【发布时间】:2020-10-17 21:40:33
【问题描述】:
我想用 API 获取数据。 Fecth 是我的工具,获取 API 数据。它是唯一的数组,所以我在下面的示例对象的 javascript 中使用了 fetch 函数。我的 utils 是不支持的对象。
我遇到的问题与 utils 无关。问题是异步函数中的array push。
数组推送在外面的地图功能不起作用:(
但是,正在使用地图功能:)
我该怎么办?
/* eslint-disable */
import Fetch from '@/utils/fetch';
async function allPosts(req, res) {
const myPostsAll = await Fetch(`${process.env.NEXT_PUBLIC_API_URL}/${process.env.NEXT_PUBLIC_API_USERNAME}`);
const posts = [];
myPostsAll.map(async (item) => {
const { id } = item;
const myPostRes = await fetch(`${process.env.API_URL}/${id}`);
const myPost = await myPostRes.json();
const { title, description, cover_image, body_html } = myPost;
posts.push({
id: id.toString(),
title,
thumbnail: cover_image,
description,
content: body_html,
});
// It's work
console.log(posts);
});
// It's not work
console.log(posts);
}
【问题讨论】:
-
这个我看过了,不明白要不要用
superagent? -
我不知道
superagent是什么。但是您的代码显示出对异步代码的一个非常常见的误解 - 不清楚您的目标是什么,但通过阅读链接问题的最佳答案,您应该会得到一些好主意。 -
你在这里误用了
.map()。.map()用于将一个数组转换为另一个数组。如果您只是想要副作用,请使用for..of,但这里有一种方法可以有效地使用.map()。
标签: javascript api fetch-api