私はHTTPリクエストを実行するコントローラを持っています。
この要求には、データを返すために2秒から4分の間の任意の時間がかかります。
検索に時間がかかりすぎてもリクエストをキャンセルするには、ユーザーがクリックする必要があるボタンを追加しました。角度サービスをキャンセルする約束
コントローラー:
$scope.search = function() {
myFactory.getResults()
.then(function(data) {
// some logic
}, function(error) {
// some logic
});
}
サービス:
var myFactory = function($http, $q) {
return {
getResults: function(data) {
var deffered = $q.dafer();
var content = $http.get('someURL', {
data: {},
responseType: json
)}
deffered.resolve(content);
returned deffered.promise;
}
}
}
ボタンのクリック:私はimplemeするにはどうすればよい
$scope.cancelGetResults = function() {
// some code to cancel myFactory.getResults() promise
}
myFactory.getResults()
約束をキャンセルするには、ボタンをクリックしてください。
**手動キャンセルが必要ですか、タイムアウトのあるものが必要ですか? – Mistalis
@Mistalis - 手動で、リクエストがタイムアウトするのを待つか、キャンセルをクリックすることができます。 –
[AngularJSで$ httpリクエストをキャンセルする方法は?](http://stackoverflow.com/questions/13928057/how -to-cancel-an-http-request-in-angularjs) – Liam