猿问

能否解释一下代码中Promise执行过程

class demo {

  promiseFn() {

    return new Promise((resolve, reject) => {

      resolve(10);

    });

  }

  FnA() {

    return this.promiseFn()

      .then(a => {

        throw a;

      })

      .catch(e => {

        console.log(e);

      });

  }

  FnB() {

    this.FnA().then(a => {

      console.log(a, 11111111111);

    });

  }

}


new demo().FnB();

//10

//undefined 11111111111

为什么FnB的then回执行?


墨色风雨
浏览 741回答 2
2回答

当年话下

你的代码执行等价于下面的方式class demo {    promiseFn() {        return new Promise((resolve, reject) => {            resolve(10);        });    }    FnB() {        this.promiseFn().then(a => {            console.log('a' + a)            throw a;        }).catch(e => {            console.log('e' + e);            return e            }).then(a => {            console.log(a, 11111111111);        });    }}new demo().FnB();//输出a10e10undefined 11111111111因为catch 捕获执行后返回的也是一个promise,假如你在catch里 return e的话,最后就会输出a10e1010 11111111111

精慕HU

因为FnA的错误已经处理了
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答