2016-08-24 19 views
0

我想使用地平線從Rethinkdb返回一個值:地平線/ Ionic2返回一個值

ionViewLoaded() { 
    let exampleValue; 
    exampleValue = this.getValue(); 

    console.log(exampleValue); // gives me "undefined" 
} 

getValue() { 
    let hz = new Horizon({host: "localhost:3100"}); 
    hz.connect(); 
    let table = hz('values'); 

    table.find(1).fetch().subscribe((val) => { 
    return val; 
    }); 
} 

我需要外界的功能此值,然後我想寫簡單的if/else語句(如果我這樣做成查詢然後我得到奇怪的錯誤 - 視圖重新加載超過200倍......)。無論如何要返回這個值嗎?

回答

1

無論何時從數據庫或api中檢索某些東西,您都應該爲此提供服務。這是它的目的。

繼續問你的問題,在這種情況下exampleValue未定義,因爲getValue不會等待訂閱在table.find(1).fetch()中觸發,從而返回未定義的訂閱。

你可以做的是,返回觀察者並訂閱你的ionViewLoaded或在中製作Promise

我只是演示選項#1。

ionViewLoaded() { 
    this.getValue().subscribe((exampleValue) => { 
    console.log(exampleValue); 
    }); 
} 

getValue() { 
    let hz = new Horizon({host: "localhost:3100"}); 
    hz.connect(); 
    let table = hz('values'); 

    return table.find(1).fetch(); 
} 
+0

謝謝!現在我明白了。 ;) – Patrick1870