У меня есть следующий код:
//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
.
По некоторым причинам сообщение «Данные получены» не отображается.
Мои переменные userMeta
отлично выглядят в console.log:
Что не так?
Обновление: следующий код тоже ничего не возвращает
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, так что вы уверены, что они это делают? Может быть, один из них заканчивается ошибкой... - person martin   schedule 28.10.2016forkJoin()
не передает ошибки из исходных Observables, поэтому ничего не будет напечатано, даже если возникнут ошибки. Если вы хотите убедиться, что он не выдает ошибок, вам нужно подписаться на каждый из исходных Observables. - person martin   schedule 28.10.2016