angular 函数中的级联承诺

promise in cascade in angular function

我正在创建一个带有 returns Promise 的函数,但可能在级联中有一些 Promise:

  mainFunction(): Promise<boolean> {

     return this.function1().then(
      (data) => {

        if(data.condition1()){
          this.function2()
            .then(() => {
              return true // here my problem
            })
        } else if (data.condition2()){
          return true;
        } else {
          return false;
        }
      }
    );
  }

  function1: Promise<string>{
    //return promise<string>
  } 

  function2: Promise<any>{
    //return promise<any>
  }

mainFunction 在 "else if" 和 "else" 中工作正常,其中没有 Promise 是级联的,但在 "if" 中我在另一个 promise true 未返回后请求 promise。

我该怎么做?

删除 function2 调用中的 then 并return它以进行级联:

mainFunction(): Promise<boolean> {

 return this.function1().then(
  (data) => {

    if(data.condition1()){
      return this.function2();
    } else if (data.condition2()){
      return true;
    } else {
      return false;
    }
  }
);

}

你可以像下面那样做

mainFunction(): Promise<boolean> {
return new Promise((resolve, reject) => {
  this.function1().then((data) => {
    if (data.condition1()) {
      this.function2()
        .then(() => {
          resolve(true);
        })
    } else if (data.condition2()) {
      resolve(true);
    } else {
      reject(false);
    }
  })
})