2017-10-04 35 views
0

問題很簡單:如何使方法find()返回一個帶有已找到文檔的Observable?將NeDB查找()結果轉換爲可觀察

如果我使用承諾,一切工作正常。

getData(){ 
return new Promise((resolve, reject) => { 
    this.db.find({}, (err, docs) => { 
    if (err) reject(err); 
    resolve(docs); 
    }); 
}) 
} 

但是,如果我嘗試使用觀測來解決這個問題是這樣的:

getDataObs() { 
    return new Observable(subscriber => { 
     this.db.find({}, (err, docs) => { 
     if (err) subscriber.error(err); 
     subscriber.next(docs); 
     }); 
    }) 
    } 

的訂戶得到的結果是不確定的。

我遇到了創建observables的方法,bindCallback()應該解決這個問題,因爲它接受回調並返回一個observable。但我無法正確使用它。我非常需要一些幫助來理解這一點,因爲我沒有經歷過反應式編程,而且這對我來說似乎很奇怪。

回答

0
getData(){ 
    var arr =[]; 
    return this.getDataObs().subscribe(rs=>{ 
     if(rs && rs.length>0) arr = rs; 
    }); 
}