承诺角度函数级联

时间:2018-01-30 11:55:41

标签: angular angular-promise angular5

我创建一个返回Promise的函数,但可能会有一些级联的承诺:

var file = document.getElementById("file1") .files;  
for(var i = 0; i < file.length; i++){
   var formdata = new FormData();
   formdata.append("file1", file[i]);
   var ajax = new XMLHttpRequest();
   ajax.upload.addEventListener("progress", progressHandler, false);
   ajax.addEventListener("load", completeHandler, false);
   ajax.addEventListener("error", errorHandler, false);
   ajax.addEventListener("abort", abortHandler, false);
   ajax.open("POST", "http://localhost:3006/api/RestAPI/Store");
   ajax.send(formdata);
   }
}

mainFunction在&#34中工作正常;否则如果&#34;和#34;其他&#34;,其中没有承诺是级联但是在&#34;如果&#34;我要求承诺的另一个承诺是真的不归还。

我该怎么做?

2 个答案:

答案 0 :(得分:2)

你可以做类似下面的事情

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);
    }
  })
})

答案 1 :(得分:1)

在function2调用中删除then然后返回它以进行级联:

mainFunction(): Promise<boolean> {

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

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

}