如何使用JavaScript实现在指定时间后启用另一个函数
假设我们已经有了一个函数 add() ,它接受两个参数 a 和 b ,并返回它们的和。我们需要实现一个函数,能够在给定的 延迟 时间后调用任何函数。可以使用以下方法来实现:
方法1:创建 一个函数,该函数接受延迟时间、要调用的函数和参数 列表 。
示例: 在此方法中,我们将 add() 函数及其参数传递给我们创建的 callAfter() 函数。在给定的 延迟 时间之后, setTimeout() 方法会从callAfter()方法中调用add()函数,并将参数传递给该函数。
JavaScript代码:
<script>
function callAfter(delay, myFunct,
...params) {
setTimeout(() => {
myFunct(...params);
}, delay);
}
function add(a, b) {
alert("The sum is : " + (a + b));
}
callAfter(2000, add, 4, 7);
</script>
输出:

方法2: 使用匿名函数。
示例: 在某些情况下,您可能希望传递带有参数的函数,但在回调被调用之前不希望它被调用。在这种情况下,您可以将其包装在匿名函数中。
<script>
function callAfter(delay, funct) {
setTimeout(() => {
funct();
}, delay);
}
function add(a, b) {
alert("The sum is : " + (a + b));
}
callAfter(2000, function() {
add(4, 7);
});
</script>
输出:

方法3:在JavaScript中使用原型: 在这种方法中,我们可以向函数构造函数的原型对象中添加一个方法。这样我们就可以使用 callAfter() 了。
语法:
functionName.callAfter(delay, param1, param2, ....);
示例: 该示例展示了上述解释的方法。
<script>
Function.prototype.callAfter =
function(delay, ...params) {
setTimeout(() => this(...params), delay);
};
function add(a, b) {
alert("The sum is : " + (a + b));
}
add.callAfter(2000, 4, 7);
</script>
输出: 在上述所有接近方法中,指定的延迟后显示一个警报消息。

极客教程