我明顯錯過了一些關於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