Wednesday, 26 July 2017

javascript - How can we access variable from callback function in node.js?



var sys = require('sys');
var exec = require('child_process').exec;
var cmd = 'whoami';
var child = exec( cmd,
function (error, stdout, stderr)
{
var username=stdout.replace('\r\n','');
}
);

var username = ?


How can I find username outside from exec function ?


Answer



You can pass the exec function a callback. When the exec function determines the username, you invoke the callback with the username.



    var child = exec(cmd, function(error, stdout, stderr, callback) {
var username = stdout.replace('\r\n','');
callback( username );
});



Due to the asynchronous nature of JavaScript, you can't do something like this:



    var username;

var child = exec(cmd, function(error, stdout, stderr, callback) {
username = stdout.replace('\r\n','');
});

child();

console.log( username );


This is because the line console.log( username ); won't wait until the function above finished.




Explanation of callbacks:



    var getUserName = function( callback ) {            
// get the username somehow
var username = "Foo";
callback( username );
};

var saveUserInDatabase = function( username ) {
console.log("User: " + username + " is saved successfully.")
};

getUserName( saveUserInDatabase ); // User: Foo is saved successfully.

No comments:

Post a Comment

casting - Why wasn't Tobey Maguire in The Amazing Spider-Man? - Movies & TV

In the Spider-Man franchise, Tobey Maguire is an outstanding performer as a Spider-Man and also reprised his role in the sequels Spider-Man...