當我使用deferred.resolve
方式承諾了一個行動,我不能獲取文件的內容化妝Node.js的fs.readFile如用品質
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之間有什麼不同?
相關http://stackoverflow.com/questions/22519784/how-do-i-convert-an-existing-callback-api-to-promises –