node.js - 如何等待 findit 结果?
问题描述
您好我正在使用库findit递归搜索目录树中的文件。我能够找到该文件,但是在尝试对文件执行某些操作之前如何等待搜索完成?现在我有:
var path = require('path');
var finder = require('findit')(project_root_dir);
finder.on('file', function (file, stat) {
if (path.basename(file) == 'file_im_looking_for.json') {
stop() // found it
console.log('FOUND IT');
console.log(file);
console.log(path.basename(file));
found_file = file;
}
});
// Now I want to do some stuff with found_file
我的问题是 findit 需要一些时间才能运行,因此我稍后引用 found_file 的代码通常处理未定义的值而不是我想要的文件路径字符串。在使用我的 found_file 变量之前,如何等待 finder.on() 方法完成?
解决方案
承诺是你需要的。试试这个代码:
(async () => {
var search = new Promise((resolve, reject) => {
var finder = require('findit')(project_root_dir);
finder.on('file', function (file, stat) {
if (path.basename(file) == 'file_im_looking_for.json') {
stop() // found it
console.log('FOUND IT');
console.log(file);
console.log(path.basename(file));
resolve(file)
}
});
finder.on('error', reject);
});
var found_file = await search;
// do some stuff with found_file
})()
推荐阅读
- c# - app.UseAuthentication(); 不适用于 Jwt 令牌 C# .Net Core 3.1(MVC Web 应用程序
- reactjs - React 上的 Material-UI Snackbar 固定在页面底部
- atom-editor - 在 Atom 编辑器中安装软件包时遇到问题
- dart - why we get error when we try to get a value from stdin in dart programming language?
- python - 多处理:不能在文件之间共享变量
- server - Godaddy 服务器上的数据在最新数据和 1 年前的数据之间不断波动。请解决
- python - Python jsonschema 没有引发异常
- python - Python:Telnet Libray,等待提示
- javascript - firebase 8.4 重复运行 .once()
- html - 孩子不在父 div 内