在链式 then 调用中隐式管道解析和拒绝
Implicitely pipe resolve and reject in chained then calls
我在 Typescript 中使用 Promises 编写了很多代码,其中链式 .then
调用看起来像这样:
aFunc(originalT: T) {
return new Promise((resolve:any, reject: any) => {
this.otherFunc(originalT).then(
newT => this.yetAnotherFunc(newT).then(
resolve,
reject),
reject);
});
}
我的问题是,因为我只是通过管道传递 resolve 和 reject,有没有办法在不显式执行的情况下编写这个函数?
注意:我无法使用 async/await。
只是 return 内部承诺。这会将它们链接在一起,因此原始的 returned 承诺在内部承诺解决之前不会解决:
aFunc(originalT: T) {
return this.otherFunc(originalT).then(function(newt) {
return this.yetAnotherFunc(newT);
});
}
创建承诺然后.then(resolve, reject)
也是一个anti-pattern。你几乎总是可以只使用你的函数已经创建的承诺和 return 它们的一些派生,而不是像你正在做的那样创建一个新的承诺。
P.S。我不知道打字稿,所以如果我搞砸了打字稿语法,你可以从我在这里展示的内容中看到这个想法。
我在 Typescript 中使用 Promises 编写了很多代码,其中链式 .then
调用看起来像这样:
aFunc(originalT: T) {
return new Promise((resolve:any, reject: any) => {
this.otherFunc(originalT).then(
newT => this.yetAnotherFunc(newT).then(
resolve,
reject),
reject);
});
}
我的问题是,因为我只是通过管道传递 resolve 和 reject,有没有办法在不显式执行的情况下编写这个函数?
注意:我无法使用 async/await。
只是 return 内部承诺。这会将它们链接在一起,因此原始的 returned 承诺在内部承诺解决之前不会解决:
aFunc(originalT: T) {
return this.otherFunc(originalT).then(function(newt) {
return this.yetAnotherFunc(newT);
});
}
创建承诺然后.then(resolve, reject)
也是一个anti-pattern。你几乎总是可以只使用你的函数已经创建的承诺和 return 它们的一些派生,而不是像你正在做的那样创建一个新的承诺。
P.S。我不知道打字稿,所以如果我搞砸了打字稿语法,你可以从我在这里展示的内容中看到这个想法。