我已经提到this question。也就是说,我不相信我的问题在于对异步的误解。为什么fs.readFile返回一个缓冲区?
这是我的模块的相关部分。
var fs = require('fs');
var q = require('q');
var u = require('../utils/json');
var indexFile = './data/index.json';
function getIndex() {
var def = q.defer(),
promise = def.promise,
obj;
fs.readFile(indexFile, function(err,data) {
if (err) {
throw err;
def.reject(err);
}
console.log('data', data);
def.resolve(obj);
});
return promise;
}
当我登录'数据'时,我得到一个缓冲区(下),而不是该文件的JSON内容。
<Buffer 5b 7b 22 68 65 6c 6c 6f 22 3a 22 77 6f 72 6c 64 22 7d 5d>
对此有何想法?
另一方面,如果你想拒绝你的推迟,不要抛出'err'。 – Andbdrew 2014-10-09 02:19:32
@Andbdrew好点。谢谢你的提示。 – 2014-10-09 02:23:09
而API默认为缓冲区而不是字符串的原因是缓冲区是读取二进制数据的唯一安全方式。但是,即使在通过直接调用'.toString()'来读取它后追加强制到字符串上下文中,也可以将缓冲区转换为字符串:'''+ buffer' – slebetman 2014-10-09 03:44:54