Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/384.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,我正在写一段代码来演示回调函数。我有一个函数alpha,其中我传递一个函数beta作为回调。我假设必须执行第一个alpha,在所有工作完成后,必须执行beta。为什么我看到beta首先被执行,正如回调所说,它们在所有工作完成后执行——这是我学到的 函数alpha(){ 警报(“hi”); } 函数beta(){ 警惕(“你好”); } α(β())这不符合您的想法: alpha(beta()); 这会立即调用beta,然后将beta()的结果传递给alpha的调用。由于beta不返回任何内容

我正在写一段代码来演示回调函数。我有一个函数alpha,其中我传递一个函数beta作为回调。我假设必须执行第一个alpha,在所有工作完成后,必须执行beta。为什么我看到beta首先被执行,正如回调所说,它们在所有工作完成后执行——这是我学到的

函数alpha(){
警报(“hi”);
}
函数beta(){
警惕(“你好”);
}

α(β())这不符合您的想法:

alpha(beta());
这会立即调用
beta
,然后将
beta()
的结果传递给
alpha
的调用。由于
beta
不返回任何内容,因此结果是
undefined

您想要的是将函数本身作为回调发送,而不是执行函数的结果:

alpha(beta);
另外
alpha
中,您需要实际调用回调:

function alpha(callback){
    alert('hi');
    callback();
}

这和你想的不一样:

alpha(beta());
这会立即调用
beta
,然后将
beta()
的结果传递给
alpha
的调用。由于
beta
不返回任何内容,因此结果是
undefined

您想要的是将函数本身作为回调发送,而不是执行函数的结果:

alpha(beta);
另外
alpha
中,您需要实际调用回调:

function alpha(callback){
    alert('hi');
    callback();
}

您需要从alpha调用beta。您可以通过名称来实现,也可以通过传递它而不内联调用它。您需要从alpha调用beta。您可以通过名称来实现,也可以通过传递而不内联调用来实现;(@Deadpool:我刚刚更新了答案。你也没有在任何地方调用回调。但是现在hello根本不会打印;(@Deadpool:我刚刚更新了答案。你也没有在任何地方调用回调。