我是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()
完成执行之前调用。现在我该如何解决这个问题?
答案 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