javascript - 如何将数据从一个函数导出到另一个函数

标签 javascript node.js

我希望从一个函数生成数据,并将其用于另一函数。

到目前为止我已经尝试过:

1.返回对象
2. 将对象插入数组
3. 迭代对象并推送到数组
4. 将变量加载到函数定义中。

功能A:读取目录中的文件

const directoryPath = path.join(__dirname, '../views/mtemp');

function list(param){
  fs.readdir(directoryPath, function (err, files) {
    if (err) {
        console.log(err);
    }
    files.forEach(function (file) {
        param.push(file); 
    });
  });
  console.log(param);
}

功能 B:Express-Router

router.get('/', function(req, res, next) {
  var param = [];
  list(param);
  console.log(param);
  res.render('task');
});

功能A:解析目录并列出其中的文件。 功能B:Express-router

我想显示目录而不嵌套 Func。 A 进入 Func。

最佳答案

对函数做出 promise ,然后导出和导入它

文件 foo.js

const {promisify} = require('util');
const {readdir} = require('fs');
const readAsync = promisify(readdir);

module.exports = (path) => readAsync(path);

文件 bar.js

const reader = require('./foo');

reader('./').then(e => {
    console.log(e);
});

或者在你的文件中

router.get('/', async function(req, res, next) {
    const list = await reader('./');
    console.log(list);
    res.render('task');
});
<小时/>

不要按照另一个答案中的建议使用 fs.readdirSync。

关于javascript - 如何将数据从一个函数导出到另一个函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57462544/

相关文章:

javascript - 如何防止 Angular 方法多次触发?

javascript - 重定向然后发出警报

javascript - 嵌套的 If-else 语句被跳过

javascript - TypeScript 导入与 ES6 对象解构

javascript - 使用curl请求并登录站点

node.js - 尝试在命令行创建一个 Express 应用程序

javascript - 如何决定点击区域应该在哪里

javascript - 通过代码检查我的单选按钮并触发更改事件

mysql - Node.js promise 和错误处理。这不能做得更干净吗?

node.js - 如何在测试过程中手动触发net.socket错误事件