私はAngular(1.4)サービスに少し問題があります。コードはおおよそ次のようになります。サービスを中止することを約束します
service.retrieveStuffFromServer = function() {
return httpCallFromServer().then(
function(data) {
if (Array.isArray(data)) {
return data;
}
return [];
}
);
};
私はこの機能を2つの異なるコントローラで呼び出します。意図したとおりの時間のほとんどは、それが動作しますが、私はそれらの条件に問題を抱えている:
- HTTP呼び出しがデータを返すために時間がかかる
- コントローラーAがサービスを呼び出します。
- コントローラBがサービスを呼び出します。
- サービスはコントローラAにデータを返します
- コントローラBのコールはキャンセルされます。実行後のロジック
サービスを少し変更してサービスが既にビジー状態になっている場合は、どちらかのコントローラに通知して、後で再試行できますが、これが正しいかどうかわかりません最高の解決策、私はいくつかのアドバイスを探しています。
2つの呼び出しが同じ結果、つまりキャッシュされるようにしますか? – dfsq
ポイントは、任意のコントローラから一度だけサービスデータを呼び出すことですか?なぜコントローラBの呼び出しがキャンセルされたのですか? –
その条件記述のどの部分がそれに到達するためのステップであり、問題のある動作は何ですか(そして、代わりに何が起こるべきですか)。 – Bergi