账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    关于promise链式调用的错误捕捉(见描述)?
    29
    0

    目前有这样的需求,页面上有两个按钮---保存和提交,点击保存的时候,会调用保存接口,点击提交的时候回先调用保存接口然后调用提交接口。然后我就写成如下:

    // 点击保存按钮的时候
    save () {
       // 请求保存接口
       axios.get(...).then(){
        // 消息提示
       }.catch(error) {
         处理错误信息
       }
    }
    
    // 请求提交接口
    commit () {
      axios.get(...).then() {
        // ....
      }.catch(error) {
        // 错误处理
      }
    }
    
    confirm () {
      // 先请求保存接口
       axios.get(...).then(){
        // 调用提交接口
        this.commit()
       }.catch(error) {
         处理错误信息
       }
    }

    一开始我是这么写的,因为也就2个接口链式,但是后来我仔细一想这样写的话,不就是回调地狱的写法了吗,在then的回调函数里调用函数。

    所以我改写成

    // 点击保存按钮的时候
    save () {
       // 请求保存接口
       axios.get(...).then(){
        // 消息提示
       }.catch(error) {
         处理错误信息
       }
    }
    
    // 请求提交接口
    commit () {
      return axios.get(...)
    }
    
    confirm () {
      // 先请求保存接口
       axios.get(...).then(){
        // 调用提交接口
        return this.commit()
       }.then() {
         
       }.catch(error) {
         // 错误处理
       }
    }

    但是这样我想到一个问题,他后面这个catch捕获的是保存接口的报错还是提交接口的报错呢?

    总所周知then和catch都会返回promise,如果就是就近的使用catch捕捉,那么后面的then方法会运行造成不可预料的错误

    0
    打赏
    收藏
    点击回答
    您的回答被采纳后将获得:提问者悬赏的 11 元积分
        全部回答
    • 0
    • 那年那夏 普通会员 1楼
      502 Bad Gateway

      502 Bad Gateway


      nginx
    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部