我可以使用收到的承诺和五个承诺的数组吗?

时间:2018-01-16 12:56:48

标签: javascript node.js

是否可以拥有一个接受五个承诺的功能?

function getDadosQuestionarios(getDadosQuestionarioET, getDadosQuestionarioST, getDadosQuestionarioWAI, getDadosQuestionarioOQ10, getDadosQuestionarioAQP9){
    return Promise.all([getDadosQuestionarioET, getDadosQuestionarioST, getDadosQuestionarioWAI, getDadosQuestionarioOQ10, getDadosQuestionarioAQP9])
  .then(function(values){
    return [values[0], values[1], values[2], values[3], values[4]]
  })
}

我已经测试了两个并且它有效,但当我添加第三个承诺时,我收到错误:getDadosQuestionarioWAI is not defined

1 个答案:

答案 0 :(得分:0)

可以肯定的是,请看下面的代码作为示例,还要注意当参数作为未定义提供时如何捕获错误。

(async function(){
    const delay = time => new Promise(res=>setTimeout(()=>res(time),time));
    console.log('Start', new Date())

    const testFn = function(a,b,c,d,e){
        // Note: Arguments is a built in property.
        if(Array.from(arguments).indexOf(undefined)!=-1){
            return new Promise((res,rej)=>rej('Undefined Argument'));
        }else{
            return Promise.all([a,b,c,d,e]);
        }
    };
    testFn(delay(1),delay(2),delay(3),delay(4),undefined).then(data=>{
        console.log('Done', new Date());
    }).catch(err=>console.log('ERROR:',err));
})();