javascript - Node JS 的 Promises 数组仍处于 <pending> 状态

标签 javascript node.js asynchronous promise

我想在处理文件之前使用 Promises 对文件进行一些检查。

由于我使用 Node JS,我希望异步执行所有验证,因为它们都是独立的。

但是,我想一次打印所有错误(如果有的话)以进行调试。所以我需要等待所有操作完成后再做其他事情。所以我使用 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()函数的结果,但尽管await关键字多次出现,它们仍然处于待处理状态。

你知道我做错了什么吗?

提前致谢。

最佳答案

我想你想使用Promise.all这里。您实际上不必执行.map调用每个单独函数的逻辑和 await它。只要check(<file>)返回 Promise ,只需调用 Promise.all在他们身上。

示例:

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

    const results = await Promise.all(check);
    console.log('results', results);

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

}

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/all

关于javascript - Node JS 的 Promises 数组仍处于 <pending> 状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60658656/

相关文章:

javascript - 如果选择的值在没有按钮的情况下发生变化,则提交 wordpress 表单

javascript - browser.find 对于 Firefox 附加组件不断返回未定义

javascript - NodeJS 第一个 res.body 对象在引号中

javascript - 文件读取器 API : how to read files synchronously

javascript - .then() 方法返回的 promise 对象的用途是什么?

javascript - 单击更改拇指组的类别

javascript - 找出带有位置 : fixed element on iOS 8 的无缝滚动

node.js - 我可以使用 node.js SDK 筛选 Azure ServiceBusService 吗?

javascript - javascript中函数之间的区别

异步任务中的 C# 更改标签文本