如何在JavaScript函数中使用回调函数

时间:2011-03-13 12:16:46

标签: javascript callback

我是JavaScript的新手,需要在我的java脚本函数中使用回调函数。我不知道如何使用回调函数。以下是我的代码:

function SelectedFeature() { 
 // Here is my code  call_Method1(); 
 call_Method2(); 
 } 

上述函数中的问题是,call_method2()call_Method1()结束执行之前开始执行。为了解决这个问题,有人告诉我使用回调函数。现在我如何在SelectedFeature()函数中使用回调函数?请使用代码示例进行解释。

我正在call_method1()中发出异步请求。我需要在完成执行call_Method2()后调用call_method1()。但在我的情况下,call_method2()call_method1()完成执行之前调用。现在我该如何解决这个问题?

3 个答案:

答案 0 :(得分:7)

你必须重构call_method1()以在完成执行后接受并执行回调:

call_method1(call_method2);

function call_method1(callback) {
    // ...
    // do asynchronous stuff, when the response is processed, call
    if(typeof callback === 'function') {
        callback();
    }
    // ...
}

函数是一等公民,所以通过他们的名字引用它们,你可以像任何其他值一样传递它们。

如果您发布call_method1的代码,我们可以提供更好的帮助。

答案 1 :(得分:0)

您使用什么来进行异步调用?你自己编写代码还是使用像JQuery这样的库?

你可以简单地说一个bool来说“工作”,你设置为true,因为方法1开始,并在完成时返回false。然后你可以让method2在工作时等待。

答案 2 :(得分:0)

菲利克斯已在上面回答了这个问题。受到他的答案以及我在当前项目中遇到的一个问题的启发,我写了一个小小的要点,其中有一个课程可以增加一些额外的安全性。

总而言之,您传递回调函数就像传递变量的方式一样。然后接收器将其作为函数触发。

myCoolFunction: function( data ) {
  // Do some thing with response
}

$.get( '/some/cool/url', myCoolFunction );

上述$.get在获取数据后,使用参数myCoolFunction回拨data

如果myCoolFunciton是变量会发生什么。那么它取决于接收器如何处理输入。

为了小心,我有一个CoffeeScript类(及其JavaScript编译),它将进行一些安全检查。

它没有做任何魔法,检查它是否是一个函数并返回,如果没有返回一个空函数,这样就可以减少JS错误的可能性。 https://gist.github.com/ziyan-junaideen/8717925