1

私はNodeJの初心者です。これは、非同期関数を学習するための私のコードです。

//--------------------- MAIN ---------------
console.log("Endpoint 1\r\n");

testThread(1000000000,function (result){
    console.log(">>>>"+result+"\r\n");
});

console.log("Endpoint 2\r\n");

//------------------------------------------


function testThread(data,callback) {    
    //take a long time
    for(j=0;j<data;j++) {
        a = 122342342342424242431*3543652636364;
    }
    //          
    callback(a);
}

それを実行します:

node testthread.js

常に結果は次のとおりです。

Endpoint 1

>>>>4.335387639806787e+32

Endpoint 2

システムが「Endpoint 1」を出力し、2 秒かかり、">>>>4.335387639806787e+32" を出力した後、「Endpoint 2」を出力します。

ここで非同期が見つかりません。そのはず:

Endpoint 1

Endpoint 2

>>>>4.335387639806787e+32

説明してください。

4

2 に答える 2

1

これは完全な同期コードであり、node.js はシングル スレッドであるため、この方法で 2 番目のスレッドを開始することはありません。

ネットワーク要求やデータベース呼び出しなどの非同期タスクがいくつかありますが、これはそうではありません。

これを非同期にするには、子プロセスを生成する必要があります。

詳細については、 http://nodejs.org/api/child_process.htmlを参照してください。

于 2013-02-28T08:44:37.827 に答える