函数在NodeJs

时间:2017-11-26 13:44:35

标签: javascript node.js asynchronous callback undefined

我有一个函数返回一个变量为“undefined”的问题,即使我可以在NodeJs中读取函数内部的变量值,也会进行函数调用。好吧,我明白这可能是Javascript中异步调用的问题,我应该使用回调,并且在此之前已经得到了解答,但我无法弄清楚它是如何在我的情况下工作的。

它们都在同一个Js文件中,查询fuseki服务器没有任何问题,因为我可以在函数中读取查询的输出。

有人可以帮帮我吗?提前谢谢!

APP.js

功能

    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"

0 个答案:

没有答案