什么是回调地狱以及promise的链式调用和aysnc/await

2021-06-08 22:02:47 浏览数 (1)

上面一篇博客写到了回调地域的问题,这篇博客将深究这个词语,如下例:

代码语言: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)
  }
  }

0 人点赞