2017-04-24 5 views
0

私のIonic 3アプリのページは、ネットワーク通話を行い、約束の形で結果を受け取ります。しかし、一部の通話には他の通話より時間がかかります。要求Bより前に行われた要求Aは、要求Bより応答に時間がかかることがあります。古い約束をキャンセルするには?

例えば、テキストクエリの検索では、ユーザーがバックエンド彼は応答Aの前に応答Bを受け取ることができます。次に、ビューは2番目の検索結果を表示し、しばらくしてから期待される動作ではない最初の検索結果を表示します。私はいつも最後のリクエストのデータを表示する必要があります。

最新のデータを表示するにはどうすればよいですか?

+0

observablesを使用してください - キャンセル可能ですがPromisesはありません。 –

+0

[この回答](http://stackoverflow.com/questions/30233302/promise-is-it-possible-to-force-cancel-a-promise/30235261#30235261)を読んでみてください。 –

答えて

1

複数の要求の競合状態を処理する方法は、要求にタイムスタンプをクエリパラメータまたはヘッダーとして追加し、応答を受け取ったときに再度確認することです。タイムスタンプがすでに処理された最新のものでない場合は、それを放棄してください。