【发布时间】:2017-10-19 12:39:10
【问题描述】:
我正在使用promisify 函数来promisify 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);
});
这可以使用promise吗? 谢谢你的建议。
【问题讨论】:
-
不清楚“再次发送”是什么意思?当您获得已解决的承诺并在
.then()处理程序中获得您的datums值时,此时您想做什么? -
嘿@jfriend00 对我选择的措辞感到抱歉,当我得到解决的承诺时,我想向服务器/url 发出新请求。我想获取哈希变量并发出新的发布请求
-
好的,我在我的回答中表明了这一点。
标签: javascript node.js callback promise xmlhttprequest