2 回答
TA贡献1805条经验 获得超9个赞
我想你在找
// readDir :: String -> Task Error (List String)
const readDir = path => new Task((reject, result) => {
fs.readdir(path, (err, data) => (err ? reject(err) : result(new List(data))));
});
// readStat :: String -> Task Error Stats
const readStat = filepath => new Task((reject, result) => {
fs.stat(filepath, (err, data) => (err ? reject(err) : result(data)));
});
// dirList :: String -> Task Error (List Stats)
const dirList = dir => chain(
traverse(Task.of, compose(readStat, concat(dir))),
readDir(dir),
);
dirList('./shared/').fork(console.log, console.error);
TA贡献1810条经验 获得超5个赞
为了更清楚地展示它,下面的示例之所以有效,是因为我们得到了一个可遍历的 Maybe 。
const readFirst = path => compose(
chain(traverse(Task.of, compose(readStat,concat(path)))),
map(safeHead),
compose(readDir, ()=>path),
);
const stats = maybe('nope', console.log)
readFirst('./shared/')().fork(console.error, stats)
在您的评论中,您试图遍历一个数组,该数组未实现该方法。我需要一种使数组可遍历的方法,然后我想我可以将执行捆绑在一起并在我分叉任务时返回统计列表。
添加回答
举报