JavaScript not getting function returns in Node.js -


i have made irc bot purely learning purposes have minecraft server use api status json. have made code , works reason when try , use return on function can content seems not work?

so have 2 functions below:

    function getservers(name) {         if (name == "proxy") {             var request = unirest.get(proxy);              request.header('accept', 'application/json').end(function (response) {               main = response["raw_body"];               data = json.parse(main);               console.log(data["motd"]);               return data.motd;             });         } else if (name == "creative") {             var request = unirest.get(creative);              request.header('accept', 'application/json').end(function (response) {               main = response["raw_body"];               data = json.parse(main);               return data;             });         } else if (name == "survival") {             var request = unirest.get(survival);              request.header('accept', 'application/json').end(function (response) {               main = response["raw_body"];               data = json.parse(main);               return data;             });         }     }      // main logic:     function parsemessage(msg, to) {         // execute files         function pu(o,t,f){if(o)throw o;if(f)throw f;bot.say(to,t)}         if (msg.substring(0,1) == pre) {             // array             msgs = msg.split(' ');              console.log(msgs[0]);              // run login             if (msgs[0] == pre+"help") {                 bot.say(to, "help & commands can found here: https://server.dannysmc.com/bots.html");             } else if (msgs[0] == pre+"status") {                 // status of server, should return online/offline - player count each server - motd                  server = getservers("proxy");                 console.log(server);                  /*var data = '';                  var request = unirest.get('https://mcapi.us/server/status?ip=185.38.149.35&port=25578');                  request.header('accept', 'application/json').end(function (response) {                   main = response["raw_body"];                   data = json.parse(main);                 });               } else if (msgs[0] == pre+"players") {                 // should return player list each server                } else if (msgs[0] == pre+"motd") {                 // should return message of day.                } else if (msgs[0] == pre+"ip") {                 bot.say(to, "shinexusuk ip address: shinexusuk.nitrous.it");                     } else if (msgs[0] == pre+"rules") {              }         }     } 

the code in getservers() function works, when

console.log(data["motd"]); 

it outputs servers message of day. when return

data.motd  

(same data["motd"]?) code calls function here

server = getservers("proxy"); console.log(server); 

please note node.js code , contains many files can't paste it. here link github repo whole node application: here

when function getservers called, makes asynchronous request , return nothing. callback fired response of request parameter.

note function getservers end before end callback of request called

(simplified version)

function getservers(name) {     var request = unirest.get(proxy);      request.header('accept', 'application/json').end(function (response) {         main = response["raw_body"];         data = json.parse(main);         console.log(data["motd"]);         return data.motd;     });      // nothing returned here } 

what need function callback called after got response.

function getservers(name, callback) { // callback added     var request = unirest.get(proxy);      request.header('accept', 'application/json').end(function (response) {         main = response["raw_body"];         data = json.parse(main);         console.log(data["motd"]);         callback(data.motd);    // fire callback data parameter     });      // nothing returned here } 

and can use function :

getservers("proxy", function(server){       console.log(server);       .... }) 

Comments

Popular posts from this blog

toolbar - How to add link to user registration inside toobar in admin joomla 3 custom component -

linux - disk space limitation when creating war file -