0
只是在使用nodeJS構建函數時遇到了一些問題。它似乎沒有返回值,我有一種感覺,這是由於函數調用的異步性質。任何幫助將非常感激!nodeJS等待函數在繼續之前返回
sendFilesToDB發送一個數組(來自fs.readdir)的待處理文件。這些文件的內容用於構建SQL查詢。一旦插入成功,文件將被刪除。但fileToQuery函數根本不返回字符串(給出'參數必須是字符串'錯誤)。
只是在使用nodeJS構建函數時遇到了一些問題。它似乎沒有返回值,我有一種感覺,這是由於函數調用的異步性質。任何幫助將非常感激!nodeJS等待函數在繼續之前返回
sendFilesToDB發送一個數組(來自fs.readdir)的待處理文件。這些文件的內容用於構建SQL查詢。一旦插入成功,文件將被刪除。但fileToQuery函數根本不返回字符串(給出'參數必須是字符串'錯誤)。
fileToQuery
正在恢復無效,因爲它說:
function fileToQuery(filePath) {
do_something(...);
}
返回聲明你有沒有從filesToQuery
而是從你定義它的匿名函數返回
你需要重寫你的fileToQuery
函數需要一個額外的參數(或許resultCallback
),而不是返回你的SQL字符串,你這樣做:
return resultCallback("INSERT IGNORE ....");
然後您就稱呼它:
fileToQuery(file,function(query){
client.query(query, function(err, results) {
fs.unlink(file, function(err) {
sendFilesToDB(files);
});
});
});
順便說一句:這就是所謂的「延續傳遞風格」,並且可以支持匿名函數的任何語言來完成。你要求的是叫做的可調用延續,但是沒有很多語言有它們。如果你有興趣瞭解他們,你應該嘗試提取計劃。
啊,我想避免這種情況,但我想這就是它完成的方式。我來自一個函數執行的PHP背景,並在繼續之前返回。這似乎是不自然的如何嵌套像上面那樣。謝謝! – crawf 2011-05-01 12:34:53
函數_did_返回。它只是沒有返回*你認爲它做了什麼,*當*。事實上,PHP支持continuation(因此也延續了傳遞風格),所以你可以用PHP編寫這種方式。 – geocar 2011-05-01 12:47:23
啊,這是有道理的。感謝您的回答!儘管我的代碼現在需要進一步調整,因爲它不再持續監視... – crawf 2011-05-01 12:59:18