2017-04-24 48 views
0

我的Ionic 3應用程序的一個頁面可以進行網絡調用並以承諾的形式接收結果。但有些電話比其他電話需要更多的時間。在某些情況下,在請求B之前發出的請求A可能需要更多時間來響應,而不是請求B.如何取消舊的承諾?

例如,在文本查詢搜索中,如果用戶觸發後端具有不同參數的兩個後續請求他可以在響應A之前收到響應B.然後,視圖將顯示第二個搜索結果,然後在一段時間後顯示第一個搜索結果,這不是預期的行爲。我總是需要顯示上次請求的數據。

我怎樣才能取消承諾,以便我不顯示最新的數據?

+0

使用observables - 它們是可取消的,但不是Promises。 –

+0

您可能想閱讀[這個答案](http://stackoverflow.com/questions/30233302/promise-is-it-possible-to-force-cancel-a-promise/30235261#30235261) –

回答

1

我處理多個請求的爭用條件的方式是將時間戳添加到請求中作爲查詢參數或標題,然後在收到響應時再次檢查它。如果時間戳不是已經處理過的最近的時間,就把它扔掉。