javascript - 如何在文件查找函数 (Node.js) 中返回结果?

标签 javascript node.js function return

使用 Node.js,我尝试在当前目录中搜索文件名末尾附加了随机数的特定文件。经过一番网上搜索后我发现this package可能最适合这项工作,但我似乎无法让它发挥作用。

这是我到目前为止所拥有的:

const find = require('find');

function func1() {
    const x = find.file(/solution[0-9]*\.json/, __dirname, function(files) {
        console.log(files[0]);
        return files[0];
    });
    console.log(x);
}

func1();

这在找到正确的文件并将其打印到控制台方面做得很好,但我仍然无法在 func1 中使用该文件的路径,而这正是我所需要的。这是我得到的结果:

{ error: [Function: error] }
C:\Users\dir1\dir2\solution78029853.json

我尝试了多种“实验性”可能的语法,但似乎都不起作用,这确实是我能得到的最接近的语法。我确实注意到 { error: [Function: error] }显示在 console.log(files[0]); 之前,但我不太确定这是否是问题所在,如果是,我不知道如何防止它。没有 const x =console.log(x);我没有收到任何错误,只显示了路径,所以我确信其中有问题;我只是不知道是什么。我已经在网上搜索了一个多小时,但没有任何进展,所以希望有人知道我做错了什么(可能很简单)。

Bergur 评论后编辑 func1():

function func1() {
    const x = find.file(/solution[0-9]*\.json/, __dirname, function(files) {
        console.log(files[0]);
        return files[0];
    })
    .error(function(err) {
        if (err) {
            //
        }
    });
    console.log(x);
}

这不会产生错误,只是为 console.log(x); 打印未定义 .

最佳答案

函数find.file是异步的,这意味着您将在回调中获得结果(该函数的第三个参数)。 假设您正在使用 ES6 并且希望避免回调 hell 问题,您可以像这样使用 async 和 wait :

const find = require('find');

async function findFile(name, path) {
  return new Promise(function (ok, fail) {
    find.file(name, path, function(files) {
        ok(files.find(_ => true)) // resolve promise and return the first element
    });
  });
}

async function func1() {
    const x = await findFile(/testFile[0-9]/, "files")
    console.log(`Path to my file: ${x}`);
}

func1();

链接:https://repl.it/repls/ZestyJauntyApplicationserver

关于javascript - 如何在文件查找函数 (Node.js) 中返回结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58847007/

相关文章:

javascript - 在javascript中生成动态对象数组

javascript - 获取 'img' src恢复路径

javascript - NodeJS - mysql 包尊重完成 INSERT INTO...SET 后的列名称?

c - 如何将 "return"数组从函数到 c 中的 main

javascript - 关于ajax回调的删除问题

javascript - 如何在真实示例中使用 javascript 模块模式?

javascript - Node.js child_process exec 的标准输出被缩短

javascript - 如何将空字符串作为 dynamodb 中字段的值传递?

javascript - 在附加的 js 文件中重新分配 javascript 函数

javascript - 页面加载开始时调用的函数 - javascript