setTimeout循环等待另一个setTimeout循环

问题描述 投票:0回答:1

我想在第一个功能完成后执行第二个功能。结果:i:0,i:1,...,i:9,j:0,j:1,...,j:9

function first(callback){
  for(let i = 0 ; i < 10;i++){
    setTimeout(() => {
      console.log('i: ',i);
    },10*i);
  }
  setTimeout(() => {
    callback();  
  },10*i);
}

function second(){
  for(let j = 0 ; j < 10; j++){
    setTimeout(() => {
      console.log('j: ',j);
    },10*j);
  }
}

first(second());
javascript loops for-loop callback settimeout
1个回答
0
投票

first中有10次迭代,因此second的回调应在10 * 10毫秒后运行。另外,请确保将second传递到first,而不是立即调用second

function first(callback) { for (let i = 0; i < 10; i++) { setTimeout(() => { console.log('i: ', i); }, 10 * i); } setTimeout(callback, 10 * 10) } function second() { for (let j = 0; j < 10; j++) { setTimeout(() => { console.log('j: ', j); }, 10 * j); } } first(second);
© www.soinside.com 2019 - 2024. All rights reserved.