JS Promise 链 .catch() 在被拒绝后不工作

JS Promise chain .catch() not working after rejected

我无法让 .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);
        });
    })
}

原来我的第一个解决方案确实有效,但我误解了输出。

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