我想制作一个具有查询功能的聊天机器人。我正在尝试为我的项目实现回调函数。
我在下面写了两个函数: encodeData():拆分换行符“\ n”,用于查询条件。 queryData():在进行查询以获得结果之前从encodeData()获取条件。
然而,我遇到了一个问题。为什么queryData()在启动时运行了4次。 和queryData()没有返回任何内容。有人可以帮我解决这个问题吗?谢谢〜
var async = require('async');
var sql=require('mssql');
var text = "";
async.parallel([
function(queryData){
text = encodeData("QQQQ\nEEEE\nCCCC\nDDDD\n", queryData);
}], function(){
//after that send message to someone.
console.log("result: "+text);
});
function encodeData(text,callback){
text = text.replace(/ +/g,"");
var result = text.split("\n");
for (i = 0; i < result.length; i++) {
if(result[i].trim().length > 0) {
text += queryData(result[i]);
}
}
return callback(text);
}
function queryData(message){
sql.close();
var message = "";
sql.connect(config,function (err) {
if(err) console.log(err);
var request=new sql.Request();
request.query("select * from order where 1=1 and no = '123456'" ,function(err,recordset){
if(err) {
console.log(err);
message = "failure";
} else {
console.log(recordset);
message = "success";
}
});
});
return message;
}
答案 0 :(得分:0)
Yous应在null
函数的第一个callback
参数中发送encodeData
参数
async.parallel([
function(queryData){
text = encodeData("QQQQ\nEEEE\nCCCC\nDDDD\n", queryData);
}], function(error, result) {
// Catch error
if (error)
return console.error(error);
//after that send message to someone.
console.log("result: "+text);
});
function encodeData(text,callback){
text = text.replace(/ +/g,"");
var result = text.split("\n");
for (i = 0; i < result.length; i++) {
if(result[i].trim().length > 0) {
text += queryData(result[i]);
}
}
/*
* If you have cache error or no have error you should send null
*/
return callback(null, text);
}