Javascript-使函数异步

Javascript-使函数异步,javascript,node.js,asynchronous,Javascript,Node.js,Asynchronous,我第一次用Node.js构建了一个应用程序,对异步函数有点困惑。我越来越善于识别什么时候由于异步而无法工作,但仍然不确定如何补救 以下是我的功能: function titleCase(element){ var string = element.replace(/([^\W_]+[^\s-]*) */g, function(txt){ return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase()

我第一次用Node.js构建了一个应用程序,对异步函数有点困惑。我越来越善于识别什么时候由于异步而无法工作,但仍然不确定如何补救

以下是我的功能:

function titleCase(element){
    var string = element.replace(/([^\W_]+[^\s-]*) */g, function(txt){
            return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();
        })
    element = string;
}
var 1 = "UPPER CASE"; var2 = "lower case"; var3 = "MiXeD CaSe";
titleCase(var1);
titleCase(var2);
titleCase(var3);

console.log(var1 + " " + var2 + " " + var3);
}
(函数应采用字符串并给出其标题大小写)

当前,当代码运行时,我得到

大小写混合体

因此很明显,
console.log
是在
titleCase
函数正确启动之前发生的。我知道一种解决方案是不使用函数,只对每个变量调用字符串replace 3次,但我想学习异步执行


实现这一点的最佳方法是什么,以确保
console.log
函数仅在所有3个
titleCase
函数完成后才启动?

这与异步无关,变量分配不是这样工作的
element
titleCase
函数的局部变量,因此执行该赋值不会在函数之外产生任何影响。您需要返回一个值:

function titleCase(element) {
    return element.replace(/([^\W_]+[^\s-]*) */g, function(txt) {
        return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();
    });

}

var var1 = "UPPER CASE";
var var2 = "lower case";
var var3 = "MiXeD CaSe";
var1 = titleCase(var1);
var2 = titleCase(var2);
var3 = titleCase(var3);

console.log(var1, var2, var3); 

它与异步无关,变量赋值不是这样工作的
element
titleCase
函数的局部变量,因此执行该赋值不会在函数之外产生任何影响。您需要返回一个值:

function titleCase(element) {
    return element.replace(/([^\W_]+[^\s-]*) */g, function(txt) {
        return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();
    });

}

var var1 = "UPPER CASE";
var var2 = "lower case";
var var3 = "MiXeD CaSe";
var1 = titleCase(var1);
var2 = titleCase(var2);
var3 = titleCase(var3);

console.log(var1, var2, var3); 

js是一种在服务器端使用JavaScript的方法,通过事件处理程序处理请求(请求是一个事件)

你的代码块与此无关。看来你到目前为止还没有意识到这一点

但是,要运行示例,请尝试:

function titleCase(txt){
    return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();

}
var var1 = "UPPER CASE"; var2 = "lower case"; var3 = "MiXeD CaSe";
var1 = titleCase(var1);
var2 = titleCase(var2);
var3 = titleCase(var3);

console.log(var1 + " " + var2 + " " + var3);
请注意,js中没有“通过引用传递”特性,所以您应该使用如下结构

var1 = titleCase(var1)
而不是

titleCase(var1)

Node.js是一种在服务器端使用JavaScript的方法,通过事件处理程序处理请求(请求是一个事件)

你的代码块与此无关。看来你到目前为止还没有意识到这一点

但是,要运行示例,请尝试:

function titleCase(txt){
    return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();

}
var var1 = "UPPER CASE"; var2 = "lower case"; var3 = "MiXeD CaSe";
var1 = titleCase(var1);
var2 = titleCase(var2);
var3 = titleCase(var3);

console.log(var1 + " " + var2 + " " + var3);
请注意,js中没有“通过引用传递”特性,所以您应该使用如下结构

var1 = titleCase(var1)
而不是

titleCase(var1)
希望能有所帮助