我自己有以下代码
async
axios
try/catch
块:
async function getCharacter (realmSlug, characterName) {
try {
const [{id, name, gender, faction, race, character_class, active_spec, realm, guild, level, last_login_timestamp, average_item_level, equipped_item_level}, {pets, unlocked_battle_pet_slots},{mounts}] = await Promise.all([
getCharacterSummary(realmSlug, characterName), -- custom axios instance
getCharacterPetsCollection(realmSlug, characterName),
getCharacterMountsCollection(realmSlug, characterName)
])
....
return result;
} catch (error) {
console.log(error.code);
if (error.response.status === 404 || error.response.status === 403) {
console.error(`${getCharacter.name},${characterName}@${realmSlug}`);
}
return { name: characterName, realm: realmSlug }
}
}
问题是如果我用
promise.all
根据Stackoverflow
1
2
(catch)
阻止。完全。即使我不需要打印它们,我也会在控制台中收到关于
404 errors
,但是
console.log(error.code)
还是什么都没给我。例如:
那么,有什么方法可以在控制台中处理这些恼人的错误消息吗?
例如使用
.catch
在什么地方?或使用
for await ... of
或
rxJS
如果可能的话?
即使我导出这个函数
getCharacter
.js
归档并使用以下代码:
const getCharacter = require('./getCharacter');
let bulkCharacters = [{realmSlug, characterName},{realmSlug, characterName},... ,n]
const promises = bulkCharacters.map(async ({realmSlug, characterName}) => {
try {
return await getCharacter(realmSlug, characterName);
} catch (e) {
console.log(e)
}
});
let test = await Promise.all(promises)
.catch(function(arrayOfPromises, err) {
console.log('A promise failed to resolve', err);
return arrayOfPromises;
})
.then(function(arrayOfPromises) {
console.log(arrayOfPromises)
})
;
console.log('stop')
我仍然在控制台中接收到错误,没有触发
catch
内部阻塞
获取字符
函数或在其中导入此函数并
抓住
块不在函数范围内。