我已經提到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