簡體   English   中英

Javascript-使函數異步

[英]Javascript - Making a function asynchronous

我是第一次使用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);
}

(該函數應使用字符串並以標題大小寫)。

目前,當代碼運行時,我得到

UPPER CASE lower case MiXeD CaSe

因此很明顯,在titleCase函數正確觸發之前, console.log正在發生。 我知道一種解決方案是不使用該函數,而僅對每個變量調用3次字符串替換,但是我想學習異步地做。

確保此最佳方法是什么,以確保僅在完成所有3個titleCase函數之后才啟動console.log函數?

它與異步無關,變量分配不能那樣工作。 elementtitleCase函數的局部變量,因此執行該賦值對函數外部沒有任何影響。 您需要返回一個值:

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); 

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)

希望對您有所幫助

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM