【发布时间】:2020-03-13 01:04:49
【问题描述】:
我想在处理之前使用 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 关键字出现了多次,但它们仍然处于未决状态。
你知道我在做什么错吗?
提前致谢。
【问题讨论】:
-
async和map不会做你想做的事。您仍然需要Promise.allmap返回的内容。 -
如果你真的想打印所有错误你应该使用
Promise.allSettled -
感谢您的建议,他们给了我一个很好的指示 :) 我对当前上下文使用了另一种方法,但会注意这些命令以用于其他用途。
标签: javascript node.js asynchronous promise