gpt4 book ai didi

javascript - 多个 Async/Await Try-Catch block

转载 作者:太空宇宙 更新时间:2023-11-04 02:02:46 25 4
gpt4 key购买 nike

我来这里是因为我在调试我的应用程序时遇到问题。不明白为什么我的应用程序崩溃是非常烦人的。我正在使用 Promise(带有 then/catch block ),但我了解使用 async/await 的必要性。

我有一个方法,我可以对其进行多次等待。这里的问题是,如果我的应用程序因任何原因崩溃,我永远不知道问题出在哪里。我已经这样描述了该 block :

         static async processCSGOGroupsAndUsers (groupName)  {

try{
const csgoApiData = await csgoApi(groupName);

const parsedData = await xmltojson(csgoApiData);

const id = parsedData.memberList.groupID64;
//const members = await retrieveMembers(groupName, parsedData.memberList.memberCount);
const totalUsers = await UsersService.processCSGOUsers(id, parsedData);

const csgoGroup = {
name: parsedData.memberList.groupDetails.groupName,
siteUrl: parsedData.memberList.groupDetails.groupURL,
id,
totalUsers
};

await GroupsDao.save(csgoGroup);

}catch (err){
return err;
}

}


static async processCSGOUsers (groupId, parsedData) {

try{

let steamIdsArr = [];

const usersSteamIdsObj = parsedData.memberList.members.steamID64;

Object.keys(usersSteamIdsObj).forEach(key => {
//if (steamIdsArr.length < 2) // TODO csGOBackPackAPI don't let me do more than 50 request per hour
steamIdsArr.push({
steam_group_id_64: groupId,
steam_id_64: usersSteamIdsObj[key]
});
});

//const filteredUsers = await UserService.filterUsersByInventoryValue(steamIdsArr);
UsersDao.saveUsers(steamIdsArr);

} catch(err){

console.log(err);

return err;
}
}

static processCSGOGroups(req, res){
GroupService
.processCSGOGroupsAndUsers(req.body.group)
.then( () => res.status(200).end())
.catch( error => res.status(400).send(error));

}

还有比我的更好的方法吗?

最佳答案

我创建了一个 NPM 包来帮助解决此类情况。 https://www.npmjs.com/package/@simmo/task

下面显示了示例用法。这个想法是,它应该有助于删除用​​条件逻辑替换的 try/catch - 希望有助于使所有内容更具可读性! :)

import task from '@simmo/task'

const { error, data } = await task(fetch('/some-api'))

if (error) {
// Failure
console.error(error)
} else {
// Success
console.log(data)
}

关于javascript - 多个 Async/Await Try-Catch block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45406812/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com