我有一个函数返回一个变量为“undefined”的问题,即使我可以在NodeJs中读取函数内部的变量值,也会进行函数调用。好吧,我明白这可能是Javascript中异步调用的问题,我应该使用回调,并且在此之前已经得到了解答,但我无法弄清楚它是如何在我的情况下工作的。
它们都在同一个Js文件中,查询fuseki服务器没有任何问题,因为我可以在函数中读取查询的输出。
有人可以帮帮我吗?提前谢谢!
function fuseki(type,query){
var optionsKB = {
method: 'post',
body: query,
json: true, // Use,If you are sending JSON data
url:"",
headers: {
'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
'Accept':'application/sparql-results+json,*/*;q=0.9'
}
};
if (type == "query")
{ var result;
optionsKB.url = "http://127.0.0.1:3032/iii2017/query";
request(optionsKB, function (err, res, body) {
if (err) {
console.log('Error querying the knowledge base', err);
return;
}
//console.log(body);
var str = body.results.bindings[0].variable.value;
result = str.split("#")[1];
console.log("From function:", result); //PRINTS RESULT CORRECTLY
return result;
});
}
}
var getNeighQuery = "PREFIX iii:<http://manufacturing.com/ontology.owl#> SELECT * WHERE {iii:zone_3_7 iii:hasNeighbour ?neighbour.}"
var neighbour = fuseki("query",getNeighQuery); //queries the fuseki with the query obtained in the previous step to obtain
console.log('neighbour: ', neighbour); //PRINTS "undefined"