此文章是看了 B站老师讲的视频 写的
起因我们都是到使用promise是为了解决回调地狱的问题
如下:
// 成功的回调函数
doSomething(function(result){
doSomethingElse(result, function(newSesult){
doThirdThing(newSesult, function(finalResult){
console.log("Got the final result:" + finalResult);
})
})
})
回调地狱存在的劣势: 不便于阅读, 不便于异常处理
promise链式调用
可以解决回调地狱问题
doSomething().then(function(result) { //result是doSomething函数成功执行的返回值
return doSomethingElse(result) //执行器函数,同步回调
})
.then(function(newResult){ //newResult是doSomethingElse成功执行的返回值
return doThirdThing(newResult)
})
.then(function(finalResult){
console.log('Got the final result' + finalResult)
})
.catch(failureCallback) //统一的错误处理
promise链式表达虽然解决了回调地狱和错误的统一处理,但是还有回调函数, 因此最优方式为:
async/await
: 回调地狱的终极解决方案
async function request() {
try{
const result = await doSomething()
const newResult = await doSomethingElse(result)
const finalResult = await doThirdThing(newResult)
console.log('Got the final result' + finalResult)
} catch (error) {
failureCallback(error)
}
}