这只是一个任务,挑战,从字面上讲,我概述的一切都是信息
我们可以为回调“添加完毕”添加另一个参数。
重要的是,console.log('all all done')只需要显示 无论调用顺序如何,“定时器”功能均已完成执行。
我无法弄清楚该任务的处理方式,我需要使用回调进行输出,但是我需要等待所有调用完成 我们拥有的:
//Write a “timer” function which takes a function and timeout, after all executions fire a callback (‘all is done’):
const timer = // your code
timer( () => {
console.log(500)
}, 500 )
timer( () => {
console.log(3000)
}, 3000 )
timer( () => {
console.log(1500)
}, 1500 )
timer( () => {
console.log(2500)
}, 2500 )
答案 0 :(得分:0)
如果这是一个与promise相关的问题,则您的常量将返回一个带有promise的函数:
const timer = (timeout) => {
return new Promise(function(resolve, reject) {
setTimeout(function(timeout) {
resolve(() => { console.log(timeout)});
}, timeout);
});
}
Promise.all().then( () => { alert("All is done") })
答案 1 :(得分:0)
这就是我解决问题的方式。 在不使用全局变量的情况下解决它会很酷。
//Write a “timer” function which takes a function and timeout, after all executions fire a callback (‘all is done’):
let maxTimer = 0;
const timer = async (toRun, timeout) => {
++maxTimer
const done = await new Promise((resolve, reject) => {
setTimeout(() => {
toRun()
resolve()
}, timeout)
} )
if (maxTimer === 0){
console.log('all is done')
}
}// your code
timer( () => {
console.log(6000)
--maxTimer
}, 6000 )
timer( () => {
console.log(500)
--maxTimer
}, 500 )
timer( () => {
console.log(1500)
--maxTimer
}, 1500 )
timer( () => {
console.log(7000)
--maxTimer
}, 7000 )
timer( () => {
console.log(2500)
--maxTimer
}, 2500 )