因为我在工作中使用async。我将发送一个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();
因为我不喜欢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
的解决方案,但此代码不具有语义。
答案 0 :(得分:0)
您可以使用普通.catch
method承诺:
async initIndexData() {
let data = await this.getData().catch(e => {
console.log(e);
});
},
async getData() {
const res = await $.ajax({
// ^^^^^ much better than `new Promise`
// as it does not ignore the ajax error handler
url: 'xx.json',
});
if (res.success) {
return res;
} else {
throw res;
}
}