以下代码在第一个.then上出错:
/Users/danielbyrne/working/mite_npm/mite.js:48
.then(configMan.validateSettings(parsedData))
ReferenceError: parsedData is not defined
我不明白为什么这段代码失败了。 电话:
parseConfigurationFile(path.join(__dirname,'file.config'))
.then(validateSettings(parsedData));
它所调用的功能:
function parseConfigurationFile(fileName) {
var readFile = q.nfbind(fs.readFile);
readFile(fileName,"utf-8")
.then(function(data) {
var deferred = q.defer();
// Return the Config 'settings' in JSON
deferred.resolve(JSON.parse(data));
return deferred.promise;
});
}
function vaidateSettings (data) {...}
这种方法的唯一方法是将函数validateSettings更改为匿名函数并将其内联如下:
parseConfigurationFile(path.join(__dirname,'file.config'))
.then(function(parsedData){...});
为什么我不能以这种方式链接命名函数?
答案 0 :(得分:1)
您的validateSettings调用应该是这样的:
parseConfigurationFile(path.join(__dirname,'file.config'))
.then(validateSettings);
原因是validateSettings需要作为函数引用,而.then将使用正确的参数调用该函数。按照您的方式执行操作,您会收到引用错误,因为在绑定函数调用时parsedData不可用。