我正在尝试订阅一个以角度2返回可观察对象的函数。 因此,当添加任何新工作符时,主调用函数应具有值
//基于firebase DB的功能
getWorkers():Observable<any> {
firebase.database().ref('/workers').on('child_added', (snapshot) => {
return snapshot.val();
});
}
订户功能
workers: any[];
public ngOnInit() {
this.db.getWorkers().subscribe(workers => this.workers = workers);
}
这是说函数返回类型不是Observable,因此抛出错误。
答案 0 :(得分:2)
你的第一个方法必须返回observable。
getWorkers():Observable<any> {
firebase.database().ref('/workers').on('child_added', (snapshot) => {
return Observable.of(snapshot.val());
});
}
答案 1 :(得分:1)
for
不会返回Observable,因此您无法返回。
如果您从回调函数中返回for row in tappedArray.indices {
print("row \(tappedArray[row])")
tappedArray[row]["timeOnIce"] = timerCounter
}
,如下所示,它将仅返回回调函数而不是外部firebase.database()
函数。
您需要根据回调返回的数据创建一个observable。
我会使用 Observable.bindCallback :
Observable.of(val)
然后你可以将它用作任何可观察的:
getWorkers()
这里有一些信息from the docs