【问题标题】:$q.when in Angular$q.when 在 Angular 中
【发布时间】:2017-05-09 21:31:09
【问题描述】:

我正在从 Angular JS 迁移到 Angular 并寻找 $q.when 等价物。我已经看过 equivalent of $q.when in angular 2 但它没有使用 Observable。我们可以使用 Observable 实现这一点吗?如果没有,实现这一目标的最佳方法是什么?

【问题讨论】:

  • 你想对$q.when做什么?您可能只想要Observable.of(...),正如对该问题的第一条评论所暗示的那样。
  • 谢谢@jonrsharpe。 Observable.of() 似乎是正确的选择。但是如果你往下看,人们会建议 observable.when 和 Observable.fromEventPattern。这对我来说是令人困惑的部分。我个人觉得 Observable 的文档可以改进。
  • 这取决于你想做什么,这就是我要求更多信息的原因。

标签: angular promise rxjs observable


【解决方案1】:

$q.when === Observable.fromEventPattern

从基于 addHandler/removeHandler 函数的 API 创建一个 Observable。

http://reactivex.io/rxjs/class/es6/Observable.js~Observable.html#static-method-fromEventPattern

这是一个示例:在 DOM 文档上发出点击

function addClickHandler(handler) {
  document.addEventListener('click', handler);
}

function removeClickHandler(handler) {
  document.removeEventListener('click', handler);  
}

var clicks = Rx.Observable.fromEventPattern(
 addClickHandler,
 removeClickHandler
 ) ;
clicks.subscribe(x => console.log(x));

你也可以阅读我的博客 “$Q 映射到 RxJS” https://medium.com/@juliapassynkova/q-map-to-rxjs-981936a2b22d

【讨论】:

  • 谢谢!我检查了你的博客,但在你的博客中你建议使用 Observable.of()。我错过了什么吗?
  • 你只有一个静态值 - Observable.of,如果你有事件处理程序 - fromEventPattern
【解决方案2】:

我想你可以看看 RxJS Observable 规范,它有一个“when”运算符:https://github.com/Reactive-Extensions/RxJS/blob/master/doc/api/core/operators/when.md

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-07
    • 2017-09-15
    • 2015-10-18
    • 2017-04-28
    • 2023-03-30
    • 2016-03-12
    相关资源
    最近更新 更多