我正在使用節點。我有一個ID數組。我想根據其他API調用的響應來過濾它們。所以我想填充每個ID,並知道他們是否聲明或不是基於API的過濾器。NodeJS - 映射forEach異步/等待
我正在使用async/await。我發現最好的方法是使用Promises.all,但這不能按預期工作。我做錯了什麼?
static async processCSGOUsers (groupId, parsedData) {
let steamIdsArr = [];
const usersSteamIds = parsedData.memberList.members.steamID64;
const filteredUsers = await Promise.all(usersSteamIds.map(async (userId) => {
return csGoBackpack(userId).then((response) => {
return response.value > 40;
})
.catch((err) => {
return err;
});
}));
Object.keys(usersSteamIds).forEach(key => {
steamIdsArr.push({
steam_group_id_64: groupId,
steam_id_64: usersSteamIds[key]
});
});
return UsersDao.saveUsers(steamIdsArr);
}
除此之外,它發生了一些奇怪的事情。當我解決這個問題時,這個方法的數據參數會很好。當我到達Promise.all的行時,我得到了每個參數的「參考錯誤」。我不知道爲什麼。對於所有響應
你做這樣的東西,在一個簡單的方法'不要在任何地方使用filteredUsers,但即使你是這樣,它也會是一個布爾值數組,而不是像你期望的基於變量名的過濾用戶數組。 –
對不起,過濾的用戶在Object.keys上(忘記更新)。你對布爾值是正確的,但我沒有得到:/ –
你可以[編輯]你的問題,以糾正任何錯誤,如果你想。 –