Обещание Javascript не может перехватить тайм-ауты или 500 ошибок сервера - PullRequest
0 голосов
/ 25 сентября 2018

Я пытаюсь использовать обещание JavaScript для вызова функции несколько раз.Функция фактически вызывает URL и возвращает объект json.Я возвращаю объект json правильно, когда вызов успешен.Если какой-либо из вызовов завершается неудачно, например, тайм-аут или ошибка 500, перехват не регистрируется.Я попытался отладить код и вижу, что он никогда не перехватывается.

var promises = [];
for (var i = 0; i < questionIds.length; i++) {          
    promises.push(createPromise());         
}
Promise.all(promises).then(function (res) {
    console.log(success);
}).catch( function (error) {
    console.log("error out");
    console.log(error);
});

function createPromise() {
    return new Promise(function(resolve, reject) { 
    getserviceresult();
});
}

1 Ответ

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

Вы должны сделать либо:

function createPromise() {
    return new Promise(function(resolve, reject) { 
    getserviceresult().then(function (result) {
      if(result){
        resolve(result)
      }else{
        reject('some error')
      }
    });
});

ИЛИ некоторая логика, которая оборачивается вокруг вашей функции и вызывает resolve and reject.

function createPromise() {
    return new Promise(function(resolve, reject) { 
    const result = getserviceresult();
    if(result){
      resolve(result)
    }else{
      reject('some error')
    }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...