我面臨這種情況:Angular2中的Http數據表:如何處理修改?
我有一個前端調用REST端點來獲取一些數據並在一個表中顯示數據。
對於前端,我正在使用TypeScript中的Material Design設計Angular2。
我有一個在開發前端時提供假數據的服務,現在我將它轉換爲使用角度Http服務,從實際後端獲取數據。
這是一個例子有點像我使用的服務:
@Injectable()
export class ExampleService{
getData(): Observable<DataType>{ ... }
doStuffOnData(): Observable<boolean>{ ... }
}
現在,getData()
結果被直接噴射到它被饋送到一個MatTable
,這樣,當我僞造的一個DataSource
後端,我可以返回BehaviourSubject
並在修改數據的每個操作上使用next
。
現在我正在使用後端,我做的第一件事就是直接將http.get
的Observable結果發送到表中,並且這可行,但我不知道如何處理修改。
兩種可能性來我的腦海:
- 發送一條新GET請求的每篇文章之後檢索服務器端更新的數據
- 緩存在服務中的數據,並手動修改後,每個成功的請求製作。
還有別的嗎?比方說,我想發送一個新的GET,我可以以某種方式獲得我可以多次發送的「recurringGET」,並且它始終在相同的可觀察值上給出結果?喜歡的東西:
@Injectable()
export class ExampleService{
getData(): Observable<DataType>{ return http.recurringGET(); }
doStuffOnData(): Observable<boolean>{ http.reissueGET(); }
}
我也完全控制後端,因此,如果一個聰明的解決方案需要改變調用的返回,是可以做到的。後端是原始的PHP(是的,痛苦的,但唯一可能的解決方案給予我的託管)
你提到的(重複性GET)被稱爲長輪詢(https://stackoverflow.com/questions/333664/how-do-i-implement-basic-long-polling)。但我不知道這是否仍然使用。更好的方法是使用websockets。 –
你能詳細點嗎? websocket如何適應這種情況? – bracco23
使用websockets,您可以創建一個「響應式」流程:而不是前端請求數據的每X秒(然後可能大多數時間響應不會有新數據),後端將負責發送/通過套接字將數據推送到前端(也就是說,簡單來說,這兩層之間的「開放網關」)。 –