Promise完成后的类的调用方法

时间:2019-03-07 15:59:37

标签: javascript es6-promise

我有一个简单的课程

class A{
  constructor(){
   this.loadComponents().then(function(values) {callbackOnLoad();});
  }

  callbackOnLoad(){
  //do some things
  }

  loadComponents(){
    ...
    return Promise.all([p1,p2,p3,p4,p5,p6,p7,p8]);
  }
}

所有诺言都实现后,我无法调用callbackOnLoad。我知道“此”取决于调用者,因此我理解为什么callbackOnLoad不起作用。我怎么解决这个问题?我该如何构造/设计代码?

1 个答案:

答案 0 :(得分:2)

正确的方法是先呼叫然后在Promise.all之后立即捕获。

class A{
  constructor() {
    this.loadComponents();
  }

  callbackOnLoad = () => {
    //do some things
  }

  loadComponents = () => {
    return Promise.all([p1,p2,p3,p4,p5,p6,p7,p8]).then((values) => {
      this.callbackOnLoad();
    }).catch((error) => {
      console.log(error);
    });
  }
}