Javascript没有';t等待返回的值被存储
我想将函数的返回值存储到变量中,然后使用它们,但是javascript不会等待函数,所以当代码继续时,它似乎是未定义的 不是重复我不是说回叫 代码如下: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
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不等待它们,因此在函数完成之前它保持未定义状态。确定后,它是标记的副本。最美好的祝福。