2017-03-08 79 views
1

我在Angular2Observables有點新。根據我的理解,只要數據發生變化,他們就會將更改發佈到subscribers。我實際上從我的php後端獲得第一個響應初始運行來自PHP的角度2觀察對象

但是,如果我的數據庫the observable cant fetch the next changes again. It will only update upon refresh

我的服務

checkField(_options : T):Observable<any>{ 
    this.options = _options; 
    let x = this.serialize(this.options); 

    let headers = new Headers({'Content-Type':'application/x-www-form-urlencoded'}); 
    let options = new RequestOptions({ headers: headers}); 

    return this.http.post("http://zodiark.co.nf/php/check_id.php" , x , options).map(this.extractData).catch(this.handleError); 
} 

我的組件

regChecker.checkField(this.checkerOption).subscribe( 
    (data) => { this.testObserver = data; console.log(this.testObserver) 
}) 
上更改或更新的東西

我只是需要澄清,如果這是可能的
PS。在此先感謝

回答

3

觀測值都在很多地方使用,也有理解觀測量,但你做什麼需要了解的是,HTTP請求返回一個可觀察的是被完成的響應(或失敗),它可以在許多方面實際上你並不知道你的後端何時決定「發送」更多的數據,因爲它不是以這種方式構建的,你的後端只響應請求。因爲這個原因,對HTTP請求使用observable與對HTTP請求使用Promises幾乎完全一樣,但Observables可以取消的情況除外。

在Observable的其他用例中,優勢將變得更加清晰......我相信你會發現很多具有DOM事件可觀察性或angular2反應形式控件的值可觀察值等的例子......

希望我明白你錯過了什麼事情:)

+0

謝謝。我使用'Observable.interval'獲得了可觀察的廣播時間。我明白你想表達的意思。我以爲我可以做一些AngularFire2,我之前嘗試過,直接更改數據庫會反映在客戶端上。但再次感謝。 –

+0

哦,是的,Firebase不僅僅是一個簡單的HTTP請求;) – Amit

+0

問題是我需要使用桌面版本的現有網站。所以我的Ionic應用程序應該用'php'> _ <來獲取這個數據庫。悲傷的生活哈哈 –