我明显错过了一些关于Node.js和Actionhero如何工作的非常重要的东西。Node.js + Actionhero代码不连续运行
可有人请给我,为什么会出现以下问题解释:
我有这个简单的代码: 基本上它读取.css文件。
buildAdsHTML: function (ads, type) {
var cssDir = path.normalize(__dirname + '/../public/css/');
switch (type) {
case 'text':
var result = '';
console.log("STEP 1");
fs.readFile(cssDir + type + 'Ads.css', {encoding: 'utf8'}, function (err, data) {
console.log(err);
console.log(data);
if (!err) {
console.log("STEP 2");
result += '<style>' + data + '</style>';
} else {
}
});
break;
}
console.log('STEP 3');
return result;
}
现在,当这段代码运行时,我得到一个空字符串作为结果。控制台输出如下:
STEP 1 <- so far so good
STEP 3<- this should be last!
null <- this is the error variable
.some-random-css-class{
display: block;
width: 100;
min-height: 250px;
}
STEP 2
在某些时候我想通了,这是
fs.reafFile
异步功能
现在。 因此,我自然地将其更改为同步版本fs.readFileSync
。 现在控制台输出更是雪上加霜:
STEP 1
STEP 3
完蛋了!没有其他的。 而且我仍然得到一个空字符串作为结果。 像整个代码甚至不会通过swich
。
我注意到了我的actionhero项目的所有功能和方法中的这种行为, 在呼叫next(connection)
时最显着。你不能在方法结束时调用它。
对于每个if
或swich
我必须在里面调用它来对结果进行实际控制。
否则,我添加到连接的每个新数据都将丢失。
那是什么?请详细解释该功能,以便在编码时不发生任何dumn错误。
谢谢。
此代码在actionhero中使用在哪里?这是一个行动吗? – Evan 2014-12-04 18:37:47