【发布时间】:2013-02-05 09:10:21
【问题描述】:
如果您使用 Node.js 进行编程几天,即使 q framework 有据可查,也很难理解。但我喜欢了解它!
var Q = require('q');
var fs = require('fs');
// Make the promise manually (returns a value or throws an error)
var read1 = fs.readFile(fname, enc, function (err, data) {
if(err) throw err;
return data;
});
// Convenient helper for node, equivalent to read1?
var read2 = Q.nfbind(fs.readFile);
// Uh?!
var read3 = function (fname, enc) {
var deferred = Q.defer();
fs.readFile(fname, enc, function (error, text) {
if (error) {
deferred.reject(new Error(error));
} else {
deferred.resolve(text);
}
return deferred.promise;
});
};
// Execute
Q.fncall(read1).then(function (data) {}, function (err) {}).done();
read1、read2 和 read3 是否等效?每次函数的最后一个参数接受function (err, value)风格的回调时,我可以使用Q.nfbind吗?
【问题讨论】:
标签: node.js asynchronous promise q