我正在尝试使用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
?
答案 0 :(得分:1)
我现在知道问题 - 与此主题相关https://github.com/Urigo/meteor-rxjs/issues/25。
MeteorObservable
订阅永远不会触发一个完整的事件 - 因为这样就不可能触发forkjoin
(需要完成所有内部可观察事件的触发)。
combineLatest
的工作方式 - 我现在只需要进行锻炼以获得“完成”之类的识别(可以使用假对象循环的数组大小来检查订阅回调是否已“完成”),在运行下一个假创建任务之前。