2017-08-29 93 views
0

對於任務列表應用,當用戶創建任務時,後端需要返回一個ID以唯一標識該任務當用戶稍後刪除任務時,可以在後端引用正確的任務。前端即時記錄創建和刪除,無需等待後端返回

但是,如果用戶在後端返回標識符之前刪除任務該怎麼辦?

可能不雅的解決方案我認爲:

  1. 防止刪除任務的用戶,直到後端返回標識符
  2. 產生在客戶端側(可能與用戶ID +時間戳)標識符
  3. 將創建和刪除操作結合在一起,在客戶端分配臨時ID並使用Promises確保正確刪除。 (難看的Redux框架解決方案?)
+1

最簡單的解決方案是等待響應並禁用刪除按鈕,直到收到響應。無論如何,你應該這樣做,因爲如果你沒有收到答覆,這意味着它沒有被保存在首位。 – zfrisch

+0

也許你可以在你還在等待回調的時候按下你的刪除按鈕來中止()網絡請求?否則,您可以調用您的刪除請求。無論哪種情況,您都可以立即更新UI。 –

+1

@NormanBreau @NormanBreau服務器可能已經執行了創建,但仍然在將響應發送回客戶端,在這種情況下,刪除流程既不可能也不需要。 – Avery235

回答

0

可以在Redux上正常工作的「乾淨」解決方案可以在客戶端使用生成的標識符。

所以一個用戶,在客戶端上生成一個任務id,之後用AJAX發送。

0

我會建議禁用刪除按鈕,直到你從服務器得到迴應。我知道這裏有更多的例子,但我能想到的一個例子就是在TFS門戶中。當您創建新的用戶素材時,該行會立即添加到網格中(位於頂部)。然後將api POST發送到服務器。如果您立即右鍵單擊該行,您將看到一個帶有微調框的彈出式菜單。然後,大約一秒鐘之後,前端從POST獲取響應,並且彈出菜單中填充了兩個項目(Add Task和Add Bug)。

+0

這對於代碼庫和用戶界面來說都是不必要的複雜化。我正在領導第二個解決方案。那有什麼缺點? – Avery235

+0

您仍然必須驗證數據庫記錄是否實際「保存」在服務器上。如果你在前端生成了id,然後將它保存在後端,會發生這種情況,但是由於某種原因,你的數據庫調用了錯誤?我的觀點是,你將不得不檢查和確認記錄是否以任何方式保存。 –