Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/479.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 节点JS承诺数组仍在<;待定>;_Javascript_Node.js_Asynchronous_Promise - Fatal编程技术网

Javascript 节点JS承诺数组仍在<;待定>;

Javascript 节点JS承诺数组仍在<;待定>;,javascript,node.js,asynchronous,promise,Javascript,Node.js,Asynchronous,Promise,在处理之前,我想检查一下有承诺的文件 在使用NodeJS时,我希望异步执行所有验证,因为它们都是独立的 但是,为了调试的目的,我想一次打印所有错误(如果有)。所以我需要等待所有的操作完成,然后再做其他的事情。所以我使用了async/wait关键字 这是我的密码: async function isValid(file) { try { const check = [ check1(file),

在处理之前,我想检查一下有承诺的文件

在使用NodeJS时,我希望异步执行所有验证,因为它们都是独立的

但是,为了调试的目的,我想一次打印所有错误(如果有)。所以我需要等待所有的操作完成,然后再做其他的事情。所以我使用了async/wait关键字

这是我的密码:

async function isValid(file) {
         try {
            const check = [
                check1(file),
                check2(file),
                check3(file),
                check4(file),
                check5(file)
            ]

            let results = check.map(async checking => (await checking))
            console.log((await results));

         } catch(e) {
             console.log(e)
         }

}
问题是,console.log输出的内容如下:

[
  Promise { <pending> },
  Promise { <pending> },
  Promise { <pending> },
  Promise { <pending> },
  Promise { <pending> }
]
[
承诺{},
承诺{},
承诺{},
承诺{},
承诺{}
]
我期望得到的是checks()函数的结果,但它们仍然挂起,尽管wait关键字多次出现

你知道我怎么了吗


提前谢谢。

我想你要用
承诺。全部在这里。实际上,您不必执行
.map
逻辑来调用每个单独的函数并等待它。只要
check()
返回一个
Promise
,只需调用
Promise.all

例如:

异步函数有效(文件){
试一试{
常量检查=[
检查1(文件),
检查2(文件),
检查3(文件),
检查4(文件),
检查5(文件)
]
const results=等待承诺。全部(检查);
console.log('results',results);
}捕获(e){
控制台日志(e)
}

}
async
map
不会执行您想要的操作。您仍然需要
Promise.all
what
map
返回。如果您真的想打印所有错误,您应该使用。感谢您的建议,他们给了我一个很好的提示:)我在当前上下文中使用了另一种方法,但是将注意这些用于其他用途的命令。OP想要
我想一次打印所有错误
,您的解决方案只显示第一个错误谢谢,这个解决方案实际上帮助了我。我手动处理错误,因为我的承诺是以
{success:false,reason:'bad_file_type'}
的形式记录的。不过我不确定这是不是一个好的练习