完成所有功能后的回调

时间:2019-12-03 13:39:56

标签: javascript callback event-loop

这只是一个任务,挑战,从字面上讲,我概述的一切都是信息

我们可以为回调“添加完毕”添加另一个参数。

重要的是,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 )

2 个答案:

答案 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 )