-3
因为我在工作中使用异步。我将发送ajax请求,然后收到。如何处理异步的逻辑错误?
我会这样写。
const API = {
init() {
this.initIndexData();
},
async initIndexData() {
try {
let data = await this.getData();
} catch (e) {
console.log(e);
}
},
getData() {
new Promise((resolve, reject) => {
$.ajax({
url: 'xx.json',
success(res) {
if (res.success) {
resolve(res);
} else {
reject(res);
}
}
})
});
}
}
API.init();
因为我不喜欢wirte代码try..catch
。有没有解决方案来处理reject
而不使用try catch
。
我想我可以随时使用reolve
每当发生什么事情。喜欢这个。
if (res.success) {
resolve(res);
} else {
reject(res);
}
...
let data = await this.getData();
if (data.success) {
// do sth success logic
} else {
// do sth error logic
}
以上是应对reject
没有try catch
的解决方案,但是这个代码是不是语义。
“*我不喜欢用'try..catch' * WIRTE代码” - 为什么? – Bergi
@Bergi我想当我使用try .. catch时,我不知道会发生什么错误。但在我写的例子中,你可以看到发生了什么错误,所以我认为没有必要使用try .. catch处理这个错误。 – qiuyuntao
好吧,如果你只想捕捉'!res.success'的情况,那么也许你应该用'res'解决'并且把你想要处理的条件放在那里。如果出现网络问题,JSON语法错误或其他问题,您的承诺也会拒绝(并且“catch”会触发)。 – Bergi