XHR Request: UnhandledPromiseRejectionWarning: необработанное отклонение обещания - PullRequest
0 голосов
/ 14 сентября 2018

Я пытаюсь сделать запрос в Instagram, чтобы проверить мой логин / пароль, используя метод xhr, но я получаю это сообщение об ошибке:

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);
});

1 Ответ

0 голосов
/ 14 сентября 2018

Вы получаете это сообщение, потому что в вашей функции Promise произошла ошибка или потому что вы нажали на строку reject('bad password').Если вы постоянно получаете это сообщение об ошибке, вы можете добавить улов в конце обещания следующим образом:

new Promise(function (resolve, reject) {
    ...
}).catch(function (error) {
    console.log(error);
});

Затем вы должны получить более полезное сообщение об ошибке.

И дажеесли вы не постоянно воспроизводите это сообщение об ошибке, вам все равно, вероятно, все равно следует добавить улов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...