上面一篇博客写到了回调地域的问题,这篇博客将深究这个词语,如下例:
代码语言:javascript复制doSomething(function(result){
doSomethingElse(result, function(newResult){
doThirdthing(newResult, function(finalResult){
console.log('finial result' finalResult)
},failureCallback)
},failureCallback)
},failureCallback)
这样就形成了回调函数的嵌套,难于阅读 当使用链式调用时:
代码语言:javascript复制doSomething().then(function(result){
return doSomethingElse(result)
})
.then(function(newResult){
return doThirdThing(newResult)
})
.then(function(finalResult){
console.log('final result' finalResult)
})
.catch(failureCallback)
但上述代码会有异步传透,无论哪一步出错都会给failureCallback 最终极的方法如下:
代码语言:javascript复制async func request(){
try{
const result = await doSomething()
const newResult = await doSomethinElse(result)
const finalResult = await doThirdThing(newResult)
console.log('final result' finalRequest)
}catch(error){
failureCallback(error)
}
}