gpt4 book ai didi

javascript - 如何在所有 setTimeout 函数完成后调用函数

转载 作者:行者123 更新时间:2023-11-28 04:37:21 25 4
gpt4 key购买 nike

如何在前面的所有函数完成后调用第二个函数。

function first() {
// code here
setTimeout( function() {
// code here
}, 1000);

// code here
setTimeout( function() {
// code here
}, 3000);

// code here
setTimeout( function() {
// code here
}, 3800);
}

function second() {
// code here
}

first();
first();
second();
first();
second();

似乎所有功能都是同时执行的。
非常感谢。

最佳答案

如果您需要在上次超时后调用特定函数,我认为这将为您指明正确的方向。当然,还可以写得更好,有可重用的“类”等。

function myTimeout(f,t) {
var p = new Promise(resolve=>{
setTimeout(()=>{
resolve(f.apply(this,[]));
}, t);
});


//return p.promise();
return p;
}

function first() {
var numberOfTimeouts = 3
// code here
myTimeout(()=>{
// code here
console.log('a')
}, 1000).then(()=>{
numberOfTimeouts--;
if (!numberOfTimeouts) second()
});

// code here
myTimeout( function() {
console.log('b')
}, 3000).then(()=>{
numberOfTimeouts--;
if (!numberOfTimeouts) second()
});

// code here
myTimeout( function() {
console.log('c')
}, 3800).then(()=>{
numberOfTimeouts--;
if (!numberOfTimeouts) second()
});
}

function second() {
console.log('d')
}

first();

关于javascript - 如何在所有 setTimeout 函数完成后调用函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44087177/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com