我创建一个返回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;我要求承诺的另一个承诺是真的不归还。
我该怎么做?
答案 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;
}
}
);
}