【问题标题】:Meteor Angular forkjoin for server side data initializationMeteor Angular forkjoin 用于服务器端数据初始化
【发布时间】:2018-07-18 23:02:30
【问题描述】:

我正在尝试使用 RxJS Observable.forkjoin 方法来同步我的服务器端创建的假数据,但如果我尝试将它们与 MeteorObservable.Collection<any>.insert 方法一起使用,它永远不会触发订阅。

如果我尝试对“原始”角度 Observable 使用相同的 observableBatchTest.push(Observable.from([i])); 则没有问题并且订阅触发正常。

这是现有问题的一个小例子:

function initFakeChats(numberOfChats: number): Observable<{}[]> {

 let observableBatch = [];

  for (var i = 0; i < numberOfChats; i++) {
    var data = {
      messages: Fake.word(),
      name: Fake.word(),
    };
    observableBatch.push(Chats.insert(data));
  }
  return Observable.forkJoin(observableBatch);
}

export function fakeAll() {

  let chatIds = initFakeChats(2).subscribe(
    fakeChatIds => {
      console.dir('Finished Fake Chats');
      console.dir(fakeChatIds);
      return fakeChatIds;
    },
    error => {
      console.dir(error);
    });
}

有没有一种特殊的流星方式可以到达类似的东西?比如动态嵌套Meteor.call?

【问题讨论】:

    标签: typescript meteor rxjs observable angular-meteor


    【解决方案1】:

    我现在知道问题所在 - 与此主题相关 https://github.com/Urigo/meteor-rxjs/issues/25

    MeteorObservable 订阅永远不会触发一个完整的事件——因为它不可能触发一个 forkjoin(这需要所有内部 observables 触发完成)。

    combineLatest 改为工作 - 我现在只需锻炼以识别类似“已完成”的内容(可以使用假对象循环的数组大小来检查订阅回调是否“完成”),然后再运行下一个虚假创建任务。

    【讨论】:

      猜你喜欢
      • 2021-11-08
      • 2023-03-18
      • 2015-09-15
      • 2013-02-16
      • 1970-01-01
      • 2011-07-08
      • 2020-09-25
      • 1970-01-01
      • 2023-03-30
      相关资源
      最近更新 更多