【发布时间】:2016-11-03 10:32:21
【问题描述】:
我有以下代码
var express = require('express');
var Promise = require('bluebird');
var fs = Promise.promisifyAll(require('fs'));
var path = require("path");
var langs = fs.readdirSync({directory having multiple directories});
var arr = [];
for(var v in langs){
var filename = config.path.storage + "/" + langs[v] +"/assets/_assets.json";
fs.readFile(filename, "utf8", function(err, data) {
if (err) throw err;
res.write(data);
//res.end();
});
}
res.end();
我想要做的是,一旦目录中的所有文件(在这种情况下为 lang - langs 包含:[ 'ar-dz', 'en-gb', 'en-us' ]) 被读取,我想做一个 res.send() 给客户端。
我试图通过“bluebird”模块来承诺“fs”模块。我假设 fs.readFileAsync() 中的回调导致了问题,有没有办法解决它?
【问题讨论】:
-
Becoz
res.end()将在任何res.write调用被执行之前被执行 -
好的,我正在重新格式化代码.. 我理解为什么会出现 Can't set headers,但实际问题,正如标题所说,我需要一种方法来执行我的作品迭代执行 readFile() 后的代码
标签: node.js callback promise fs