我正在尝试在循环中进行ajax调用。但看起来我们不能,所以我想知道如何避免这种情况。
我正在进行搜索,我有这种格式化数据的方法:
async formatSearchUserByNameResults(results) {
if (results.length > 0) {
results.forEach((element) => {
const currentUserData = await user.getUserById(element.id);
const aResult = searchBuilders.userBuilder(element);
aResult.following = currentUserData.folliwing;
this.searchResults.push(aResult);
});
}
},
getUserById函数进行ajax调用:
async getUserById(userId) {
const response = await axios.get(`${config.baseUrl}/users/${userId}`, { withCredentials: true });
return response.data;
}
但我总是得到这个错误:
解析错误:等待是保留字
因为forEach是同步的。
是否可以在循环中进行ajax调用?
由于
答案 0 :(得分:2)
我不确定为什么会遇到这个特定错误,但有一个问题可能是您传入forEach()的匿名函数不是异步函数。
尝试async (element) => { ...
我会避免使用异步功能,而不是跟踪它们是否完整的结果。您可以将它们包装到Promise.all()或类似的东西中,以了解它们是否已完成。