Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/378.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript没有';t等待返回的值被存储_Javascript_Node.js_Multithreading_Function_Timing - Fatal编程技术网

Javascript没有';t等待返回的值被存储

Javascript没有';t等待返回的值被存储,javascript,node.js,multithreading,function,timing,Javascript,Node.js,Multithreading,Function,Timing,我想将函数的返回值存储到变量中,然后使用它们,但是javascript不会等待函数,所以当代码继续时,它似乎是未定义的 不是重复我不是说回叫 代码如下: function register (name,user,pass) { var userex = checkUserExistance(user); var nameex = checkNameExistance(name); var globalex = nameex || userex; var done

我想将函数的返回值存储到变量中,然后使用它们,但是javascript不会等待函数,所以当代码继续时,它似乎是未定义的

不是重复我不是说回叫

代码如下:

function register (name,user,pass)
{
    var userex = checkUserExistance(user);
    var nameex = checkNameExistance(name);
    var globalex = nameex || userex;
    var done = false;
    if (!(globalex)) {
        connection.query("INSERT INTO users (`name`,`user`,`pwd`) VALUES ('" + name + "','" + user + "','" + pass + "')", function (err, rows, fields) {
            if (!err) {
                done = true;
            } else {
                var today = new Date();
                console.log(today.toGMTString());
                console.log(err);
            }
            return { "ex": {"user":userex,"name":nameex}, "done": done };
        });
    }
}

似乎缺少一个结束括号

 function register (name,user,pass)
 {
    ...
    if (!(globalex)) {
        connection.query("INSERT INTO users (`name`,`user`,`pwd`) VALUES ('" + name + "','" + user + "','" + pass + "')", function (err, rows, fields) {
        if (!err) {
            done = true;
        } else {
            var today = new Date();
            console.log(today.toGMTString());
            console.log(err);
        }

        // *** Returning from the anonymous function ***
        return { "ex": {"user":userex,"name":nameex}, "done": done };
    }); // *** End of anonymous function
} // *** end if ***

// Still inside the register() function here, no value returned.

是的,发布的代码中缺少一个
}
,但是返回语句仍然在提供给
连接的回调中。query
不会从
register
返回,因此这并不能真正解决根本问题。我怀疑OP需要开始将回调传递到
寄存器
,如重复问题中所述。不必在意,我只是快速复制了它,这不是错误!也许需要一个更好的解释。有两个函数,哪一个返回未定义的?请显示分配给的变量和函数调用。它们都返回值,但javascript不等待它们,因此在函数完成之前它保持未定义状态。确定后,它是标记的副本。最美好的祝福。