-3
私の仕事ではasyncを使用しています。私はajaxのrequstを送信し、受信します。asyncでロジックエラーを処理する方法は?
私はこのように書くつもりです。
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
とwirteコードが嫌いです。 try catch
を使用せずにreject
を処理するソリューションはありますか?
何時でもいつでも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
}
上記はtry catch
なしreject
に対処するためのソリューションですが、このコードは、意味ではありません。
"*私は' try..catch' *とwirteコード好きではない" を - なぜ? – Bergi
@Bergiどのようなエラーが起こっているのかわからないときは、私が試してみると思います。しかし、私が書いた例では、どのようなエラーが発生しているかを見ることができるので、try ... catchを使用する必要はないと思います。 – qiuyuntao
もしあなたが '!res.success'の場合だけを捕捉したいなら、多分' res'で 'resolve'して、それを処理したい場所に条件を置くべきです。あなたの約束は、ネットワーク問題、JSON構文エラー、または何か他のものがあった場合にも拒否されます(そして 'catch 'がトリガーされます)。 – Bergi