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);
}
})
})
我正在创建一个带有 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);
}
})
})