angular - Observable.forkJoin() 不执行

标签 angular rxjs observable rxjs5 angularfire2

我有以下代码:

//Loop: For each user ID/Role ID, get the data
userMeta.forEach((businessRole) => {
  Observable.forkJoin(
    af.database.object('/roles/'+businessRole.$value),
    af.database.object('/users/'+businessRole.$key)
  ).subscribe(
    data => {
      console.log("Data received");
      data[1].role = data[0];
      this.users.push(data[1]);
    },
    err => console.error(err)
  );

我正在尝试使用 forkJoin 订阅 2 个可观察对象的结果。

由于某些原因,未显示“已收到数据”消息。

我的 userMeta 变量在 console.log 中看起来很好:

enter image description here

怎么了?

更新:下面的代码也不返回任何内容

let source = Observable.forkJoin(
        af.database.object('/roles/'+businessRole.$value),
        af.database.object('/users/'+businessRole.$key)
    );
    let subscription = source.subscribe(
      function (x) {
    console.log("GOT: " + x);
  },
  function (err) {
    console.log('Error: %s', err);
  },
  function () {
    console.log('Completed');
  });

我实际上想做的是提高以下代码的性能:

//Subscription 3: role ID to role Name
        af.database.object('/roles/'+businessRole.$value)
        .subscribe((roleData) => {
        //Subscription 4: Get user info
        af.database.object('/users/'+businessRole.$key).subscribe(user => {

最佳答案

forkJoin()要求所有源 Observables 至少发出一次并完成。

以下演示按预期完成:

const source = forkJoin(
  from([1,2,3]),
  from([9,8,7,6])
).subscribe(
  x => console.log('GOT:', x),
  err => console.log('Error:', err),
  () => console.log('Completed')
);

现场演示:https://stackblitz.com/edit/rxjs-urhkni

GOT: 3,6
Completed

2019 年 1 月:针对 RxJS 6 进行了更新

关于angular - Observable.forkJoin() 不执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40303012/

相关文章:

javascript - 进一步点击会发生什么

javascript - Angular2 : AsyncPipe and Observable, 无法检索属性(TypeError : Cannot read property . .. of null)

javascript - 使用 promise 内的数据更新 angular2 View /全局变量

angular - @ng-select addTag,添加新标签后如何验证?

angular - 如何修复 Angular mat-expansion-panel 上的 ExpressionChangedAfterItHasBeenCheckedError

node.js - 使用 rxjs 的集成测试 geteventstore 存在竞争条件

angular - 预计 observable 在 Angular/Karma/Jasmine 测试中失败

javascript - 为什么我应该使用 HttpClient 而不是 fetch?

javascript - Angular 订阅被调用两次

angular - 如何从 Angular http 的响应中读取状态?