当前位置: 首页 > 面试题库 >

我们如何从node.js中的回调函数访问变量?

锺离良哲
2023-03-14
问题内容
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函数之外找到用户名?


问题答案:

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

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

由于JavaScript的异步特性,您无法执行以下操作:

    var username;

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

    child();

    console.log( username );

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

回调说明:

    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.


 类似资料:
  • 问题内容: 当我尝试读取add函数的返回值时,它什么也不返回。 而且,当我尝试将消息放入变量并从外部返回时,也给出空值。 问题答案: 简单地说, 您不能 。要从此类函数获取值,必须使用回调: 然后,您将使用如下功能:

  • 我有一个组件反应本机: 最后一行是将在新位置调用的回调方法。 通过该方法,我无法访问或 如何从回调函数更新状态?

  • 问题内容: 我在从Node.js中的回调函数返回值时遇到了小麻烦,我将尝试尽可能轻松地解释我的情况。考虑一下我有一个片段,它包含URL,并命中该URL,并提供输出: 我试图将其包装在函数中并返回如下值: 因为在我的Node.js代码中,我有很多语句将决定value的值,例如: 关键是a内的所有语句将保持相同,除了的值。因此,绝对需要将这些通用代码放入函数中。我尝试了同样的方法,但是in总是会回报我

  • 本文向大家介绍我们如何从MATLAB调用Python函数?,包括了我们如何从MATLAB调用Python函数?的使用技巧和注意事项,需要的朋友参考一下 Python库现已在MATLAB中提供(自2014b起)。如果我们使用的是2014b或更高版本,则可以直接在MATLAB中运行代码。 这样就可以在MATLAB中使用python模块。无需进行任何其他更改,只需在要使用的python库名称之前添加“

  • 问题内容: 看来我无法访问jquery ajax成功函数内的$(this)。请参见下面的代码。 问题答案: 应该怎么办 如果在该函数之外有对它的引用,则可以将其存储到变量中。

  • 问题内容: 我将ajax技术与php结合使用,我想知道如何从onreadstatechange调用的函数中获取返回变量。 一个Java函数称为onsubmit,然后调用一个php脚本来验证数据库中的某些内容,并根据结果返回true或false。 这是我遇到问题的地方,我希望onsubmit =“ return snappyajaxfunction()”根据php的结果返回false或true。 我