【发布时间】:2018-04-09 06:53:03
【问题描述】:
我已经查看了几个关于使用 async/await 和 forEach 循环的问题,但似乎没有任何内容涵盖我的用户案例......我怎样才能让下面的代码工作?现在我收到以下错误:
await 是保留字
代码如下:
export const fetchUserBookmarks = ( bookmarksIDs ) => async ( dispatch, getState, api ) => {
dispatch({
type: 'IS_FETCHING_BOOKMARKS'
});
try {
bookmarks = [];
bookmarksIDs.forEach( bookmarkID => {
const bookmark = await api.get( selectedPostByIdEP + bookmarkID );
bookmarks.push( bookmark );
});
dispatch({
type: 'HAS_FETCHED_BOOKMARKS',
payload: bookmarks
});
} catch( error ) {
dispatch({
type: 'FAILED_FETCHING_BOOKMARKS',
payload: error
});
}
}
【问题讨论】:
-
将
async添加到forEach 循环中,bookmarksIDs.forEach(async bookmarkID => {...}) -
当然,这会起作用,但不如预期的那样,例如,
dispatch将在任何内容被推送到书签之前被调用,无论您在 forEach 中做什么 - 请参阅 this answer