0
我試圖異步發送多個請求,但只有一個正在完成 - 所有其餘的全部都有xmlhttp.status == 0
和xmlhttp.readyState == 1
,每個都有四次。使用ES6進行異步請求處理
怎麼了?
我有兩個文件,Api.js
和Ajax.js
。 API是利用發送Ajax請求:
Api.js
:
import Ajax from './Ajax';
class Api {
returnData (success, failure) {
var params = {
methodId: this.ids.returnData,
requestBody: {}
};
this.sendRequest(params, success, failure);
};
sendRequest (data, success, failure) {
Ajax.execute(function (response) {
success(response); // simplified
});
};
}
export default new Api();
Ajax.js
:
class Ajax {
createXmlHttp() {
if (window.XMLHttpRequest) {
this.xmlhttp = new XMLHttpRequest();
} else {
this.xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
};
onreadystatechange (action, data) {
this.xmlhttp.onreadystatechange = function() {
if (this.xmlhttp.readyState === 4) {
if (this.xmlhttp.status === 200) {
action(this.xmlhttp.responseText);
}
}
}.bind(this);
};
execute (action, url, data) {
this.createXmlHttp();
this.onreadystatechange(action, data);
this.xmlhttp.open("POST", url, true);
this.xmlhttp.setRequestHeader("Content-Type", "text/plain");
this.xmlhttp.send(data);
};
};
export default new Ajax();
'0'不只是不完整的請求,它也可以是一個錯誤代碼...並且你寫的代碼沒有錯誤處理。 –