【问题标题】:Angular Promise with multiple handlers具有多个处理程序的 Angular Promise
【发布时间】: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


【解决方案1】:

基本思想不是不对then返回的promise添加回调,而是将它们添加到原始promise中。类似的事情会做:

let a = [fn1, fn2]; 
let p = new Promise(fn); 
a.forEach(fn => {p.then(fn)});

【讨论】:

    【解决方案2】:
    let callbacks = [fn1, fn2 ...]
    promise.then((resolvedValue) => { 
               callbacks.forEach(fn => fn(resolvedValue)); 
            }
    

    【讨论】:

      猜你喜欢
      • 2014-09-03
      • 1970-01-01
      • 2018-03-11
      • 2018-01-16
      • 1970-01-01
      • 1970-01-01
      • 2016-04-20
      • 2018-08-01
      • 2013-07-05
      相关资源
      最近更新 更多