Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/407.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_Asp.net - Fatal编程技术网

函数执行完成后如何调用函数?-Javascript

函数执行完成后如何调用函数?-Javascript,javascript,jquery,asp.net,Javascript,Jquery,Asp.net,我正在使用一个用户控件,该控件具有一组javascript函数,在执行操作时调用这些函数。此用户控件在应用程序中的许多地方都使用 当一个内置JS函数完成执行时,我需要在我的页面上启动一个自定义JS函数 有没有一种方法可以让我在另一个函数完成执行时附加要激发的函数?我不想更新内置的JS函数来调用这个页面JS函数 希望这有意义。您基本上是在尝试回调。由于您没有提到您在代码中所谈论的函数,因此最好的做法是基本上包装函数-快速且脏-并使其与回调一起工作 这样,您就可以向它传递一个Lambda匿名函数,并

我正在使用一个用户控件,该控件具有一组javascript函数,在执行操作时调用这些函数。此用户控件在应用程序中的许多地方都使用

当一个内置JS函数完成执行时,我需要在我的页面上启动一个自定义JS函数

有没有一种方法可以让我在另一个函数完成执行时附加要激发的函数?我不想更新内置的JS函数来调用这个页面JS函数


希望这有意义。

您基本上是在尝试回调。由于您没有提到您在代码中所谈论的函数,因此最好的做法是基本上包装函数-快速且脏-并使其与回调一起工作

这样,您就可以向它传递一个Lambda匿名函数,并在完成后执行任何您想要的操作

已更新以演示如何添加回调:


你基本上是在尝试回调。由于您没有提到您在代码中所谈论的函数,因此最好的做法是基本上包装函数-快速且脏-并使其与回调一起工作

这样,您就可以向它传递一个Lambda匿名函数,并在完成后执行任何您想要的操作

已更新以演示如何添加回调:


最丑陋和最好的解决方案是对内置函数进行修补。假设内置函数称为第三方:

// first, store a ref to the original
var copyOfThirdParty = thirdParty;
// then, redefine it
var thirdParty = function() {
    // call the original first (passing any necessary args on through)
    copyOfThirdParty.apply(this, arguments);
    // then do whatever you want when it's done; 
    // custom code goes here
    customFunction();
};

我们基本上创建了内置函数的修改版本,但从未接触过原始版本。

最丑陋和最好的解决方案是对内置函数进行修补。假设内置函数称为第三方:

// first, store a ref to the original
var copyOfThirdParty = thirdParty;
// then, redefine it
var thirdParty = function() {
    // call the original first (passing any necessary args on through)
    copyOfThirdParty.apply(this, arguments);
    // then do whatever you want when it's done; 
    // custom code goes here
    customFunction();
};

我们基本上创建了内置函数的修改版本,但从未接触过原始版本。

根据您尚未共享的特定代码以及您可以更改和不能更改的内容,您可以使用几种设计模式:

选项1:向某些现有代码添加回调:

因此,您可以将其称为:

mainFunction(myFunction);
选项2:换行上一个函数:

所以,现在只要有人这样做:

obj.mainFunction();

它将调用原始方法,然后调用您的函数。

根据您尚未共享的特定代码以及您可以更改和不能更改的内容,您可以使用两种设计模式:

选项1:向某些现有代码添加回调:

因此,您可以将其称为:

mainFunction(myFunction);
选项2:换行上一个函数:

所以,现在只要有人这样做:

obj.mainFunction();

它将调用原始方法,然后调用您的函数。

由于Javascript是高度动态的,您可以修改原始函数,而无需修改其源代码:

function connect_after(before, after){
    return function(){
        before.apply(this, arguments);
        after();
    };
}

var original_function = function(){ console.log(1); }
original_function = connect_after(original_function, function(){ console.log(2); })

由于Javascript是高度动态的,您可以修改原始函数,而无需修改其源代码:

function connect_after(before, after){
    return function(){
        before.apply(this, arguments);
        after();
    };
}

var original_function = function(){ console.log(1); }
original_function = connect_after(original_function, function(){ console.log(2); })

你说的内置是什么意思?内置函数是异步的吗?如果是的话,它接受回调吗?所谓内置,我只是说这个函数是这个用户控件ASP.NET使用的JS文件的一部分。你说的内置是什么意思?这个内置函数是异步的吗?如果是这样,它是否接受回调?通过内置,我的意思是该函数是该用户控件ASP.NET使用的JS文件的一部分。这些函数是普通JS函数。您是否碰巧有一个如何在JS/JqueryPlease中实现回调的示例请确保函数在完成后不会返回值,这也是实现它的一个很好的方法。这些函数都是纯JS函数。您是否碰巧有一个如何在JS/JqueryPlease中实现回调的示例请确保函数在完成后不会返回值,这也是实现它的一个好方法。