【发布时间】:2017-08-05 05:37:27
【问题描述】:
是否可以在 Angular2 中为同一个 Promise 提供多个处理程序?例如,如果我正在设计一项服务并希望允许多个客户端订阅它并在 Promise 解决时收到通知?
注意,我不是在问如何从服务返回多个值,也不是在问如何链接 Promises。
【问题讨论】:
-
您只需在原始承诺上调用
then,就像这样let p = new Promise(fn); p.then(callback1); p.then(callback2);。这不是链接,因为您要向原始承诺添加回调,而不是then返回的 -
@Maximus - 如果我不知道有多少回调?我假设我会将回调存储在一个数组中?
-
那么它有什么变化呢?
let a = [fn1, fn2]; let p = new Promise(fn); a.forEach(fn => {p.then(fn)}); -
@Maximus - 同意,它没有。但是,有一个很大的限制。在回调内部,
this未定义,不再指代 Component 实例。假设我想做除console.log结果之外的任何事情,我需要定义this。 -
只是想知道,如果您使用它提供的解决方案,不接受我的回答的原因是什么?
标签: angular