Meteor Angular forkjoin 用于服务器端数据初始化
Meteor Angular forkjoin for server side data initialization
我正在尝试使用 RxJS Observable.forkjoin
方法来同步我在服务器端创建的虚假数据,但如果我尝试将它们与 MeteorObservable.Collection<any>.insert
方法一起使用,它永远不会触发订阅。
如果我尝试将 "original" angular 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
?
我现在知道问题了 - 与这个主题相关https://github.com/Urigo/meteor-rxjs/issues/25。
MeteorObservable
订阅永远不会触发一个完整的事件——因此不可能触发 forkjoin
(这需要所有内部可观察对象触发完成)。
combineLatest
起作用了——我现在只需要锻炼来识别像 "completed" 这样的东西(可以使用伪对象循环的数组大小来检查订阅回调是否是 "completed"), 在 运行 下一个伪造任务之前。
我正在尝试使用 RxJS Observable.forkjoin
方法来同步我在服务器端创建的虚假数据,但如果我尝试将它们与 MeteorObservable.Collection<any>.insert
方法一起使用,它永远不会触发订阅。
如果我尝试将 "original" angular 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
?
我现在知道问题了 - 与这个主题相关https://github.com/Urigo/meteor-rxjs/issues/25。
MeteorObservable
订阅永远不会触发一个完整的事件——因此不可能触发 forkjoin
(这需要所有内部可观察对象触发完成)。
combineLatest
起作用了——我现在只需要锻炼来识别像 "completed" 这样的东西(可以使用伪对象循环的数组大小来检查订阅回调是否是 "completed"), 在 运行 下一个伪造任务之前。