簡潔:異步編程的最高境界就是不關心它是否是異步。async、await很好的解決了這一點,將異步強行轉換為同步處理。
async/await與promise不存在誰代替誰的說法,因為async/await是寄生於Promise,Generater的語法糖。
錯誤捕獲
如果是reject狀態,可以用try-catch捕捉
let p = new Promise((resolve,reject) => {
setTimeout(() => {
reject('error');
},1000);
});
async function demo(params) {
try {
let result = await p;
}catch(e) {
console.log(e);
}
}
demo();
區別:
1 promise是ES6,async/await是ES7
2 async/await相對於promise來講,寫法更加優雅
3 reject狀態:
1)promise錯誤可以通過catch來捕捉,建議尾部捕獲錯誤,
2)async/await既可以用.then又可以用try-catch捕捉