【发布时间】:2018-09-14 20:06:46
【问题描述】:
我尝试使用 xhr 方法向 instagram 发出请求以检查我的登录名/密码,但我收到以下错误消息:
UnhandledPromiseRejectionWarning:未处理的承诺拒绝。此错误源于在没有 catch 块的情况下抛出异步函数内部,或拒绝未使用 .catch() 处理的承诺。 (拒绝编号:1)
我想知道为什么以及如何改进我的代码。非常感谢。
var XMLHttpRequest = require("xmlhttprequest").XMLHttpRequest;
var params = "username=username&password=password";
var CSRF_HEADER = 'X-CSRF-Token';
new Promise(function (resolve, reject) {
var http = new XMLHttpRequest();
http.open("POST", "https://www.instagram.com/accounts/login/ajax/",
true);
http.setRequestHeader('x-csrftoken',
window._sharedData.config.csrf_token);
http.setRequestHeader('x-instagram-ajax', '1');
http.setRequestHeader('x-requested-with', 'XMLHttpRequest');
http.setRequestHeader("pragma", "no-cache");
http.setRequestHeader("cache-control", "no-cache");
http.setRequestHeader("accept-language", "en-US,en;q=0.8,it;q=0.6");
http.setRequestHeader("content-type", "application/x-www-form-
urlencoded");
http.onreadystatechange = function () {
if (http.readyState == 4 && http.status !== 200) {
reject('error: ' + http.status);
};
if (http.readyState == 4 && http.status == 200) {
var json = JSON.parse(http.response);
if (!json.authenticated) {
reject('bad password');
} else if (json.authenticated && json.user && json.status === 'ok')
{
resolve('success:', document.cookie);
};
};
};
http.send(params);
});
【问题讨论】:
-
您可以将
.catch链接到您的new Promise以处理拒绝