JavaScript承诺无法捕获超时或500个服务器错误

时间:2018-09-25 19:10:01

标签: javascript promise

我正在尝试使用javascript Promise多次调用一个函数。该函数实际上调用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 :(得分:0)

您必须执行以下操作之一:

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