3

在调用下面的行之前,我遇到了等待函数完成的 Javascript 问题。前面的函数包括Javascript MYSQL查询调用(node.js 的库之一)。然后它看起来像:

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 detection the INSERT/UPDATE completeness of a Query?

4

3 回答 3

1

将第二个函数的回调传递给对第一个函数的调用。在第一个函数结束时,调用回调:

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

one("my parm", two);
于 2012-06-08T14:53:53.490 回答
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 回答