JS Promise chain .catch () не работает после отклонения - PullRequest
0 голосов
/ 27 февраля 2020

Не могу заставить .catch работать. Я пробовал несколько решений, таких как throw и без комментариев reject(). Я озадачен, почему он не работает, так как я протестировал { ссылка }, который, кажется, работает точно так же, но в результате работает .catch.

Я получаю эту ошибку: Unhandled rejected promise: 404 Not Found как будто я не справился с отказом.

упрощенная версия кода:

makeRequest(theUrlOne)
    .then(result => makeRequest(theUrlTwo))
    .catch(result => console.log(result)) // not working, but not the problem
    .then(result => resolve('Success.'))
    .catch(result => resolve('Failed.')) // the problem-child

function makeRequest(url, method, datatype, timeout) {
    return new Promise(function (resolve, reject) {

        http.simpleRequest({
            'method': method || 'GET',
            'url': url,
            'dataType': datatype || 'json',
            'timeout': timeout || 6000,
        }, function (error, response) {

            if (error) {
                return Promise.reject(error)
                // reject(error)
            }
            if (response.statusCode != 200) {
                return Promise.reject(response.status)
                // reject(response.status)
            }
            let parsed = JSON.parse(response.data)

            resolve(parsed);
        });
    })
}

1 Ответ

0 голосов
/ 27 февраля 2020

Оказывается, мое первое решение действительно работало, но я неправильно понял вывод.

        if (error) {
            reject(error)
        }
        if (response.statusCode != 200) {
            reject(response.status)
        }
...