gpt4 book ai didi

node.js - 已调用 Node 异步 waterfall 回调

转载 作者:搜寻专家 更新时间:2023-11-01 00:40:28 24 4
gpt4 key购买 nike

我正在尝试使用 async.waterfall 从目录中读取一些文件,在我看来我做的事情是正确的,但是我得到了指定的错误并且从未调用过 readData 函数。怎么了?

var fs = require("fs");
var async = require("async");

var folder = "./files/";

try {
async.waterfall([
function readDir(cb) {
fs.readdir(folder, function(err, files) {
cb(err, files);
});
},
function loopFiles(files, cb) {
files.forEach(function(fn) {
console.log("loop " + fn);
cb(null, fn);
});
},
function check(fn, cb) {
console.log("check "+fn);
fs.stat(folder + fn, function(err, stats) {
console.log(stats.isFile());
cb(err, stats, fn);
});
},
function readData(stats, fn, cb) {
console.log("read "+fn);
if (stats.isFile()) {
fs.readFile(folder + fn, "utf-8", function(err, data) {
cb(err, data);
});
}
}
], function(err, result) {
if (err) {
throw err;
}
console.log(result);
});
} catch (err) {
console.log(err);
}

最佳答案

问题是,如果 files.length > 1,您将在 loopFiles() 中多次调用 cb(null, fn) .您可能需要为每个文件执行单独的 async.waterfall() 或使用其他一些 async.* 方法。

另一个问题是 readData()stats.isFile() 的情况下您没有调用 cb()计算结果为 false

关于node.js - 已调用 Node 异步 waterfall 回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36403566/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com