3

以下の行が呼び出される前に関数が完了するのを待つ Javascript の問題があります。前の関数には、Javascript MYSQLクエリ呼び出し (node.js のライブラリの 1 つ) が含まれています。次に、次のようになります。

function first() {
    /**
    * a lot processes to execute
    * including Asynchronous processes
    * like running Queries using Javascript MYSQL Library from node.js
    */
    console.log("I am the first one!");
}

first();
console.log("I am the second one!");

次に、これを実行すると、次のようになります。

I am second one!
I am first one!

キューの順序を維持して実行するにはどうすればよいですか?

注:質問を混乱させているすべての人のために、もう一度私の新しく作成した質問にジャンプ/フォローして
ください: 誰もがこの新しい質問にフォロー/ジャンプしてください: Node.js MYSQL to detect the INSERT/UPDATE completeness of a Query?

4

3 に答える 3

1

コールバックを使用するには、コードを構造化する必要があります

function first (callback) {

// do your stuff

callback.call();
}

first(function () { console.log("I am the second"; });
于 2012-06-08T14:56:32.827 に答える
1

JavaScriptあなたが抱えている問題は、以前に などの他の言語でプログラミングしたことがある人によく見られるもので、次のようになるc/javaと思いJavaScriptます。

 Line of code1. Execute,when it's done go to the next.
 Line of code2. Execute,when it's done go to the next.
 Line of code3. Execute,when it's done go to the next.

JavaScript で実際に起こることは、次のようなものです。

 Line of code1. Execute
 Line of code2. Execute
 Line of code3. Execute

期待どおりに動作させるには、イベント指向の方法でプログラムする必要があります。JavaScriptつまり、どの機能を特定の順序で実行するかを指定する必要があります。これを行うには、たとえば次JavaScriptのように使用する必要があります。callbacks

 function1 (parameter A,function2){
        //...   
        function2(parameter B,function3)} 

 function2 (parameter B,function3){//...} 

 function3 (){//...} 

上記の例をもっと一般化することもできますが、このままにしておくと理解しやすくなると思います。これについては、ウェブ上で多くの記事を見つけることができます。google検索の最初の結果で、このリンクが表示されました。

ハッピーコーディング!

于 2012-06-08T15:21:33.120 に答える
1

2 番目の関数へのコールバックを 1 番目の関数の呼び出しに渡します。最初の関数の最後で、コールバックを呼び出します。

function one(parm, callback) {
    // do something
    callback();
}
function two() {
    // do something else
}

one("my parm", two);
于 2012-06-08T14:53:53.490 に答える