【发布时间】:2014-12-03 20:09:44
【问题描述】:
我已经提到了this question。也就是说,我不认为我的问题在于对异步的误解。
这是我模块的相关部分。
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>
有什么想法吗?
【问题讨论】:
-
顺便说一句,如果你想拒绝你的 deferred,请不要抛出
err。 -
@Andbdrew 好点。感谢您的提示。
-
API 默认使用缓冲区而不是字符串的原因是缓冲区是读取二进制数据的唯一安全方式。但是,即使在读取缓冲区之后,您也可以将缓冲区转换为字符串,方法是直接调用
.toString()或将其附加到字符串上下文中:'' + buffer
标签: javascript node.js asynchronous q