Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/tfs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在JavaScript函数中使用回调函数_Javascript_Callback - Fatal编程技术网

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

如何在JavaScript函数中使用回调函数,javascript,callback,Javascript,Callback,我对JavaScript非常陌生,需要在java脚本函数中使用回调函数。我不知道如何使用回调函数。下面是我的代码: function SelectedFeature() { // Here is my code call_Method1(); call_Method2(); } 上述函数中的问题是,call\u method2()在call\u Method1()结束其执行之前开始执行。为了解决这个问题,有人告诉我使用回调函数。现在,如何在我的SelectedFeature()

我对JavaScript非常陌生,需要在java脚本函数中使用回调函数。我不知道如何使用回调函数。下面是我的代码:

function SelectedFeature() { 
 // Here is my code  call_Method1(); 
 call_Method2(); 
 } 
上述函数中的问题是,
call\u method2()
call\u Method1()
结束其执行之前开始执行。为了解决这个问题,有人告诉我使用回调函数。现在,如何在我的
SelectedFeature()
函数中使用回调函数?请使用代码示例进行解释


我正在
调用方法1()
中发出异步请求。我需要
call\u Method2()
应该在完成执行
call\u method1()
后调用。但是在我的例子中,
call\u method2()
call\u method1()
完成执行之前调用。现在我该怎么解决这个问题

您使用什么来执行异步调用?您是自己编写的还是使用JQuery之类的库


您只需在方法1启动时设置为true,然后在方法1结束时设置为false,就可以简单地将bool设置为“working”。然后,您可以让method2在工作时等待

您必须重构
调用_method1()
以在回调完成执行后接受并执行回调:

call_method1(call_method2);

函数是一级公民,因此通过使用它们的名称来引用它们,您可以像传递任何其他值一样传递它们


如果您发布
调用方法1

的代码,我们可以提供更好的帮助。Felix已经回答了上述问题。受他的回答和我在当前项目中遇到的一个问题的启发,我写了一个小要点,其中有一个类,增加了一点额外的安全性

总之,传递回调函数的方式与传递变量的方式相同。然后接收器将触发它作为一个函数

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

$.get( '/some/cool/url', myCoolFunction );
在上面的
$中,获取数据后,get
使用参数
data
回调
mycolfunction

如果myCoolFunciton是一个变量,会发生什么。这取决于接收器如何处理输入

请注意,我有一个CoffeeScript类(及其JavaScript编译),它将执行一些安全检查


它不做任何神奇的事情,检查它是否是一个函数并返回,如果不是,则返回一个空函数,以减少JS错误的可能性

我不认为那叫什么方法2();在调用_Method1()结束之前开始。我非常肯定(一定是这样)call_Method1()返回的结果是正确的。正如您已经说过的,问题在于method1中的异步调用。要解决这个问题,需要查看call_Method1()的代码;为了了解异步调用的外观以及如何使用回调,我将添加一个if语句来检查回调的类型=='function'。只是为了安全。@yoavmatchulsky:说得好。。。我只是懒惰;)。。。将添加它。您可以使用==而不是strict==,因为typeof将始终返回字符串:您也不需要
typeof
if(callback.constructor==Function)
也可以
myCoolFunction: function( data ) {
  // Do some thing with response
}

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