Javascript 等待css_parser.getCSSFiles()

Javascript 等待css_parser.getCSSFiles(),javascript,node.js,express,Javascript,Node.js,Express,我想在加载CSS时呈现页面。函数css\u parser.getCSSFiles()异步读取文件,并将css内容发送到变量css.cssFile。如何强制res.render等待文件读取结束 router.get('/main', function(req, res) { var directory = '../app/public/stylesheets/', file = 'style_720.css'; css_parser.getCSSFiles(di

我想在加载CSS时呈现页面。函数
css\u parser.getCSSFiles()
异步读取文件,并将css内容发送到变量
css.cssFile
。如何强制
res.render
等待文件读取结束

router.get('/main', function(req, res) {

    var directory = '../app/public/stylesheets/',
        file = 'style_720.css';

    css_parser.getCSSFiles(directory,file);
    app.locals.css = css.cssFile;

    res.render('ua', {
        css: app.locals.css,
    });

});

//js module

getCSSFiles: function(directory, fileName) {
    var array = css.cssFile;
       fs.readFile(directory + fileName, 'utf8', function(err, data) {
           if (err) {
               return console.log(err);
           }
           (array.push(data));
       });
}

您必须更改
getCSSFiles()
以接受回调作为参数,然后让它在回调完成时调用该回调,然后您可以从该回调内部调用
res.render()
。这是了解node.js中何时完成异步操作的常用方法

没有其他方法可以知道它何时完成。它必须通过回调或某种事件通知(一种或另一种)告诉您

如果您向我们展示
getCSSFiles()
的代码,我们可能会为您提供更具体的帮助

在修改
getCSSFiles()
之后,您希望得到的结果如下:

router.get('/main', function(req, res) {

    var directory = '../app/public/stylesheets/',
        file = 'style_720.css';

    css_parser.getCSSFiles(directory,file, function(err, data) {
        if (!err) {
             res.render('ua', {css: data});
        }
    });
});
并且,将
getCSSFiles
更改为:

getCSSFiles: function(directory, fileName, callback) {
       fs.readFile(directory + fileName, 'utf8', function(err, data) {
           if (err) {
               callback(err);
               return console.log(err);
           }
           callback(null, data);
       });
}

你不能,除非
getCSSFiles()
告诉你什么时候通过返回承诺或接受回调来完成?你用的是什么库,有文档吗?如果这是你自己编写的函数,请展示给我们。嘿,谢谢你的帮助。我刚刚添加了getCSSFiles()代码。