【发布时间】:2022-01-11 14:07:22
【问题描述】:
我必须使用 promise.all() 编写 Node.js 脚本来检查环境是否包含 docker、git、npm、nvm 和 node.js。对于每个工具,将工具版本写入标准输出。如果某些工具不存在,请写入有关它的 stderr 消息并使用正确的退出代码完成过程。
我的代码是这样的:
const util = require("util");
const exec = util.promisify(require("child_process").exec);
async function getVersion(env) {
try {
const { stdout } = await exec(env);
console.log(stdout);
} catch (error) {
console.error(error.stderr);
}
}
(async function () {
const fileVersion = [
"node --version",
"docker --version",
"nvm version",
"git --version",
"npm --version",
];
const results = await Promise.all(fileVersion);
for (const element of results) {
getVersion(element);
}
})();
我知道在该代码中 promise.all() 没有发挥任何作用,我不熟悉 promise.all() 并且请任何人都可以告诉我一个示例如何做到这一点?
【问题讨论】:
-
“我不熟悉 promise.all()”——所以熟悉一下吧。使用您选择的搜索引擎来查找它的文档。看看它做了什么。看看它期望什么论据。看看它返回了什么。看看它是否对你有用。
-
Promise.all(fileVersion);零意义 -
示例:
Promise.all([getVersion(fileVersion[0]])或Promise.all(fileVersion.map(getVersion))
标签: javascript node.js async-await es6-promise promise.all