我正在使用promise函数来宣传XHR,我想知道如何获得响应,并在响应成功时将其发回服务器。
我正在做这样的事情
function createChannel(method, url) {
return new Promise(function (resolve, reject) {
xhr.open(method, url, true);
xhr.setRequestHeader("Content-Type", "application/json");
xhr.onload = function () {
if (xhr.readyState == 4 ) {
var hashValue = resolve(JSON.parse(xhr.responseText));
console.log(hashValue);
}
else {
reject({
status: this.status,
statusText: xhr.statusText
});
}
};
xhr.onerror = function () {
reject({
status: this.status,
statusText: xhr.statusText
});
};
xhr.send(json);
});
}
createChannel(method, url)
.then(function (datums) {
console.log(datums)
}).catch(function (err) {
console.error('Sorry There Was An Error!', err.statusText);
});
如果此createChannel成功,我将获取hashvalue变量,并向服务器发出请求以获取新值。
.then(function (createChannel) {
console.log(createChannel);
});
这可能是使用承诺吗? 谢谢你的建议。
答案 0 :(得分:1)
在.then()
处理程序中,您只需发出一个新请求并返回该承诺,将其链接到第一个:
createChannel(method, url).then(function (datums) {
console.log(datums);
// call some other async function here that returns a promise
return someOtherFunctionThatReturnsAPromise(datums);
}).then(function(finalResult) {
console.log(finalResult);
}).catch(function (err) {
console.error('Sorry There Was An Error!', err.statusText);
})