2017-04-12 15 views
1

AmはXMLHttpRequestのにタイムアウトを設定しようとしているが、それはinvalid state errorを示し、ここでコードXHRタイムアウトは

function get(url, options) { 
    return new Promise((resolve, reject) => { 
    const xhr = new XMLHttpRequest(); 

    // headers 
    if (options && options.headers) { 
     for (let header in options.headers) { 
     if (options.headers.hasOwnProperty(header)) { 
      xhr.setRequestHeader(header, options.headers[header]); 
     } 
     } 
    } 

    xhr.open('GET', url); 
    // FIXME: Why is IE11 failing on "xhr.timeout? 
    // xhr.timeout = 10000; 

    xhr.onload = function() { 
     if (this.status >= 200 && this.status < 300) { 
     try { 
      const data = JSON.parse(xhr.responseText); 
      resolve(data); 
     } catch (ex) { 
      reject({ 
      status: this.status, 
      statusText: xhr.statusText 
      }); 
     } 
     } else { 
     reject({ 
      status: this.status, 
      statusText: xhr.statusText 
     }); 
     } 
    }; 

    xhr.ontimeout = function() { 
     reject({ 
     status: this.status, 
     statusText: xhr.statusText 
     }); 
    }; 

    xhr.onerror = function() { 
     reject({ 
     status: this.status, 
     statusText: xhr.statusText 
     }); 
    }; 

    xhr.send(); 
    }); 
} 

export default { get }; 

enter image description here

私は、以下のリンクlink1link2link3、具体的に見ていたのですIE11で無効な状態異常を与えますxhr.timeoutxhr.openxhr.send

の間に保ちました

xhr.onreadystatechange = function() { 
    if(xhr.readyState == 1) { 
    xhr.timeout = 5000; 
    } 
}; 

しかし、あなたが使用しているIE11のバージョンは何運

+0

あなたのFIXMEコメントについて:[@Mozila](https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/timeout)それに注意してください。 –

答えて

0

?私がこれを尋ねる理由は、XHRのいくつかの奇妙な問題があるためですが、作成者のアップデートがロードされているWindows 10のPC(afaikは現在インサイダーのプログラムを介してのみ利用可能です)上でのみです。 IE11の他のすべてのバージョンはまだ正常に動作しています...