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