在setTimeout中调用多个函数
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在setTimeout中调用多个函数相关的知识,希望对你有一定的参考价值。
我想在javascript中的一个setTimeout()
末尾调用两个函数。是否有可能,如果“是”哪一个将首先执行?
setTimeout(function() {
playmp3(nextpage);
$.mobile.changePage($('#' + nextpage));
}, playTime);
答案
可能吗?
是的,为什么不呢? setTimeout
采用回调函数作为第一个参数。事实上它是一个回调函数并没有改变任何东西;通常的规则适用。
哪一个会先被执行?
除非您使用基于Promise
或基于回调的代码,否则Javascript会按顺序运行,因此您的函数将按照您记下的顺序调用。
setTimeout(function() {
function1() // runs first
function2() // runs second
}, 1000)
但是,如果你这样做:
setTimeout(function() {
// after 1000ms, call the `setTimeout` callback
// In the meantime, continue executing code below
setTimeout(function() {
function1() //runs second after 1100ms
},100)
function2() //runs first, after 1000ms
},1000)
然后订单改变,因为setTimeout
是异步的,在这种情况下它会在计时器到期后被解雇(JS继续并在此期间执行function2()
)
如果您对上面的代码有疑问,那么您的任何一个函数都包含异步代码(setInterval()
,setTimeout()
,DOM事件,WebWorker代码等),这会让您感到困惑。
- async here代表不按特定顺序发生的异步意义
另一答案
我已经使用了这种语法,它工作正常:
$('#element').on('keypress change', function (e) {
setTimeout(function () { function1(); function2(); }, 500, $(this));
});
以上是关于在setTimeout中调用多个函数的主要内容,如果未能解决你的问题,请参考以下文章
如何让片段中的多个视图调用片段类中声明的相同 onClick 函数?
setTimeout中所执行函数中的this,永远指向window