【发布时间】:2014-04-10 18:03:24
【问题描述】:
当我使用deferred.resolve 方式承诺一个动作时,我无法获取文件的内容
function readFile(fileName) {
var deferred = Q.defer();
fs.readFile(fileName, 'utf-8', deferred.resolve);
return deferred.promise;
};
readFile('test.txt').then(function (err, data) {
console.log('data:' + data)
})
我得到data:undefined 输出
但是当我承诺采取行动httpGet时,它工作得很好
var httpGet = function (opts) {
var deferred = Q.defer();
http.get(opts, deferred.resolve);
return deferred.promise;
};
httpGet('http://www.google.com').then(function (res) {
console.log("Got response: " + res.statusCode);
res.on('data', function (data) {
console.log(data.toString());
})
}
);
上面的代码有问题吗?这样我怎样才能得到文件的内容。 还是 fs.readFile 和 http.get 之间有什么不同?
【问题讨论】: