LoginSignup
16
16

More than 5 years have passed since last update.

XMLHttpRequestを途中で止める

Last updated at Posted at 2013-07-12

XMLHttpRequestを完了する前に途中で中断させるには abort() を実行します。

var xhr = new XMLHttpRequest();
xhr.open('GET', '');
xhr.send();
xhr.abort();

jQueryの場合も同様に abort() を使います。

var jqXHR = $.ajax({ url: '' });
jqXHR.abort();

タイムアウトを実装する

具体的な利用場面としては、XHRにタイムアウトを設定したい場合。普通にしているとタイムアウトするまでに60秒待たされたりするので、それを例えば10秒でタイムアウトさせたい場合はこんな感じで書けます。

// XMLHttpRequestを発行する
var jqXHR = $.ajax({ url: '' });
jqXHR.fail(function () {
  console.log('Fail');
});

setTimeout(function () {
  // 10秒後まだpendingだったらabortする。
  if (jqXHR.state() === 'pending') jqXHR.abort();
}, 1000 * 10);

fail() はXHR通信に失敗したときに実行される関数を登録するものですが、 abort() 時も実行されます。

16
16
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
16
16