【发布时间】:2018-01-28 03:56:53
【问题描述】:
我正在使用以下代码来解析函数范围之外的promise。
private promiseResolver: ()=>void;
getPromise(): Promise<any> {
return new Promise((resolve, reject) => {
this.promiseResolver = resolve;
});
}
continueProcessing() {
this.promiseResolver();
}
它工作正常,但是我想创建一个 promiseResolver 数组来解决多个承诺。
private promiseResolvers: [()=>void];
getPromise(): Promise<any> {
return new Promise((resolve, reject) => {
this.promiseResolvers.push(resolve);
});
}
continueProcessing() {
this.promiseResolvers[0]();
}
getPromise() 函数的调用者在使用数组时不等待承诺解决。
是否可以创建这样的promise 解析器数组?
【问题讨论】:
-
我不确定你想在这里实现什么,但你试过
Promise.all()吗? -
确实,一个用例会很有帮助。我会非常谨慎地尝试像这样抽象承诺管理,这听起来有点像deferred . anti pattern。
-
如前所述,
promiseResolver是延迟反模式。考虑到问题有 rxjs 标签,你可以使用 observables/subjects 代替。 -
promiseResolvers 未初始化是一个错误,但就像 Nick Tomlin 和 @estus 所说的那样,这是一个反模式,它没有抛出错误,因此它没有报告根本原因。我会将其更改为可观察的。非常感谢。
标签: javascript typescript promise rxjs