【问题标题】:simultaneous functions javascript同步函数 javascript
【发布时间】:2017-02-04 11:46:16
【问题描述】:

我得到了这段代码,它应该在重复的赞助人之后切换元素,它会随机增长,我的 start 函数同时执行我的 runp() 函数,它变得一团糟。我需要等到 runp() 完成才能继续执行。谢谢

function runp(patron){
  var x = 0;
  var intervalID = setInterval(function () {
     $("#container"+patron[x]).toggle(1).delay(1000).toggle(1).delay(1000);     

     if (++x === 20) {
         window.clearInterval(intervalID);
     }
  }, 2000);
}

function start(patron, patronl){    
  while (patron.length<20){
    patron.push(rand(1,4));
    runp(patron);
  }   
}

【问题讨论】:

  • 请告诉我们您的代码打算做什么。
  • while 循环中调用setInterval 的目的是什么? intervalID 似乎不是全局标识符?您是否尝试按顺序呼叫setInterval 二十次?
  • 他们永远不会同时
  • 我认为您只需要在 while 循环完成后调用 runp(patron) 即可。否则,间隔会尝试访问尚不存在的patron[x]
  • 我想你不想间隔...

标签: javascript jquery


【解决方案1】:

你可以使用.queue()

// alternatively pass randomly shuffled array of elements to `$.map()`
$({}).queue("toggle", $.map($("[id^=container]"), function(el) {
  return function(next) {
    return $(el).toggle(1).delay(1000).toggle(1).delay(1000)
           .promise().then(next)
  }
})).dequeue("toggle")

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2012-02-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多