首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在node.js中访问回调函数中的变量?

如何在node.js中访问回调函数中的变量?
EN

Stack Overflow用户
提问于 2013-10-18 14:16:09
回答 2查看 70.6K关注 0票数 32
代码语言:javascript
复制
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 = ?

如何从exec函数外部找到用户名?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-10-18 14:29:15

您可以向exec函数传递回调。当exec函数确定用户名时,您将使用该用户名调用回调。

代码语言:javascript
复制
    var child = exec(cmd, function(error, stdout, stderr, callback) {
        var username = stdout.replace('\r\n','');
        callback( username );
    });

由于JavaScript的异步特性,您不能这样做:

代码语言:javascript
复制
    var username;

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

    child();

    console.log( username );

这是因为行console.log( username );不会等到上面的函数完成。

回调说明:

代码语言:javascript
复制
    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.
票数 33
EN

Stack Overflow用户

发布于 2013-10-18 15:25:33

您可以在具有回调的函数中编写"exec“语句...像这样

代码语言:javascript
复制
var sys = require('sys');
var exec = require('child_process').exec;
var cmd = 'whoami';
function execChild(callback){
    var child = exec( cmd,
          function (error, stdout, stderr) 
          {
            username=stdout.replace('\r\n','');
             callback(username);
          }
 )};
    execChild(function(username){
    console.log(username);
});
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19442829

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档