2013-02-13 47 views
3

我使用類似按鈕顯示我的頁面上的帖子列表,用戶可以打開或關閉該按鈕。 爲了扼殺我的服務器的流量,我想:僅保存服務器上已更改的對象:Restful service + angularjs

  • 發送更新爲所有其中般的地位已經在更換一次的職位同樣要求
  • 發送更新修改後的帖子只有
  • 每N秒更新一次類似狀態,並且僅在頁面退出時更新。不是每次用戶切換一個按鈕。

這是可能與angularjs?

+0

當你說「更新每N秒「是否會從服務器獲取新信息(以防別人喜歡某個狀態),還是僅僅將客戶端更改推送到服務器? – 2013-02-13 17:11:40

+0

@Trevor高級我只需要將數據推回到我的情況下的服務器。 – nakhli 2013-02-14 18:26:35

回答

5

我已經寫了,可以在這裏看到一個例子:

http://plnkr.co/edit/imMGTJ75mKJZT7ispD9E?p=preview

我花了一些時間在上面與評論,並提供獲取頁面本身,當上顯示有用信息運行。如果郵件移動太快,如果希望郵件運行速度較慢,請更改延遲時間。

從您的問題看,您希望在用戶對特定帖子進行任何更改時保存該文件。您建議每x秒檢查一次更改,但這並不理想(儘管使用setInterval實現起來很簡單)。您還提到在頁面退出時保存更改,但不能保證頁面退出時發生某些事情(例如,用戶失去功能)。爲了避免上述情況,當用戶點擊「like」按鈕時,我會觸發ajax調用,但在第一次點擊&時,在節流計時器正在運行時存儲其更改並在其後立即推送所有更改計時器結束。

這裏是我的plunker代碼做一言以蔽之:

  1. 用戶「喜歡」或「unlikes」後,它將使一個Ajax調用服務器上後新的信息。在這一點上,任何新的「喜歡」/「unlikes」被投入到需要更新的帖子的「隊列」中。

  2. 當第一個Ajax調用成功時,油門計時器啓動。在我提供的例子中,它是5秒鐘。任何對帖子的更改(「喜歡」,「不喜歡」)都會被拋入同一個「隊列」中。

  3. 5秒鐘後,它會檢查「隊列」。如果它是空的,則不採取任何行動。如果它包含項目(例如已更改的帖子),則它將進行第二次Ajax調用並更新服務器上的帖子。

我的例子不會反映你正在處理的內容,但它是一個重要的概念。你可以修改代碼,這樣它就不會長時間地抑制,或者在一定的時間內只在ajax調用x次之後才進行調節,等等。

+0

感謝您編寫示例!很有幫助。我正在仔細觀察它。 – nakhli 2013-02-14 19:27:28

相關問題