Javascript 带嵌套依赖承诺调用的异步等待
我试图学习更多关于异步、等待承诺以及所有这些的知识,我已经理解了它背后的概念,但是当涉及到这些承诺的嵌套逻辑时,我遇到了麻烦。 理论上,我所理解的是,整个async await将使您的代码看起来更加同步,这意味着所有期望承诺成为您使用await的结果的东西。 这段代码的主要目标是从目录列表中返回来自readdirPromisify、filter的文件,并只给我一个文件列表。使用stat.isf文件。 如果有人能帮忙,我将不胜感激。谢谢Javascript 带嵌套依赖承诺调用的异步等待,javascript,node.js,async-await,Javascript,Node.js,Async Await,我试图学习更多关于异步、等待承诺以及所有这些的知识,我已经理解了它背后的概念,但是当涉及到这些承诺的嵌套逻辑时,我遇到了麻烦。 理论上,我所理解的是,整个async await将使您的代码看起来更加同步,这意味着所有期望承诺成为您使用await的结果的东西。 这段代码的主要目标是从目录列表中返回来自readdirPromisify、filter的文件,并只给我一个文件列表。使用stat.isf文件。 如果有人能帮忙,我将不胜感激。谢谢 const fs = require("fs"); cons
const fs = require("fs");
const { exec } = require("child_process");
const { promisify } = require("util");
const [, , ...args] = process.argv;
const isOptionDirectory = promisify(fs.stat);
const readdirPromisify = promisify(fs.readdir);
const [packageName] = args;
const test = async function() {
const dirs = await readdirPromisify(__dirname);
const files = await dirs.filter(async file => {
const option = await isOptionDirectory(file);
return option.isFile();
});
return files;
};
console.log(test().then(val => console.log(val)));
筛选器不支持承诺。异步函数返回的承诺将被视为真实值
您将希望使用Promise.all:
筛选器不支持承诺,这意味着它不关心您传递给它的回调是否返回承诺,也不会等待它完成异步方法Beautiful。。我感谢你的答复。非常感谢。
async function test() {
const paths = await readdirPromisify(__dirname);
const options = await Promise.all(paths.map(isOptionDirectory));
return paths.filter((_, i) => options[i].isFile());
}