Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/74.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_Jquery - Fatal编程技术网

Javascript,从回调返回值

Javascript,从回调返回值,javascript,jquery,Javascript,Jquery,我有3个javascript函数: function A(){ B(data); } function B(data){ element.on('click',function(){ C(data); }); } function C(data){ //Process data } 函数C执行所有数据处理,但数据只需要在单击事件上传递,我在B中定义了该事件。因此,我也需要将数据传递给B,以确保C获得数据。这里,A是我的主程序,我不想在这里

我有3个javascript函数:

function A(){
     B(data);
}

function B(data){
    element.on('click',function(){
         C(data);
    });
}

function C(data){
    //Process data
}
函数C执行所有数据处理,但数据只需要在单击事件上传递,我在B中定义了该事件。因此,我也需要将数据传递给B,以确保C获得数据。这里,A是我的主程序,我不想在这里定义单击事件。有没有其他方法可以将数据从A直接传递到C

有没有其他方法可以将数据从A直接传递到C

您需要将带有th数据的C调用传递给B,以便:

function A(){
    B(function(){
         C(data);
    });
}

function B(data){
    element.on('click', callback);
}

function C(data){
    //Process data
}

它的工作方式与您已有的代码相同,但已将B与C解耦。

因此,基本上,您可以调用A(),然后调用B()。然后等待单击,然后单击执行C()?现在的解决方案有什么问题吗?是的。我对Javascript非常陌生,我不确定这是否是一种正确的处理方法。@putvande:每次调用Javascript时,数据都不同。但是B做了很多事情,比如使用d3创建div元素。如果我再次调用它,将创建一组全新的元素。如果我不再调用它,C会一次又一次地获取相同的旧数据,这也是不可取的。有各种各样的解决方法,但是,我只是想知道JS中是否有任何方法可以简化这个过程。所以,如果C有一个返回值,这个值将返回到哪里?A还是B?都不是。回调不会
返回任何内容,而是传递结果(也称为继续传递样式)。您可以在匿名函数中使用
C()
s(同步)结果