Async forEachSeries结束,而所有iteratee函数均未结束

时间:2018-07-18 22:57:23

标签: javascript phaser-framework async.js tween

我正在使用Phaser 2.0,并尝试将一系列命令排序在一起。每个命令都将启动补间,这意味着要花费一些时间,因此我决定使用async.forEachSeries顺序运行命令。

这是我的async.forEachSeries函数:

async.forEachSeries(parsed.moves,function(move, callback) {
                that.moveObj(move, callback)
            }, function() {
                console.log('done running the entire code')
            });

移动对象正在启动补间并调用补间的回调onComplete。

moveObject(x, y, obj,callbackToAsync, offsetX = 0, offsetY = 0) {

  let coordinates = this.convert(obj.i + offsetX,obj.j + offsetY)
  let tween = this.game.add.tween(obj, this.game, this.game.tweens).to({
    x: coordinates.x,
    y: coordinates.y
  }, 2000)

  tween.onComplete.add(callbackToAsync,this)
  tween.start()
}

因此,据我所知,应该调用每个动作,并且在补间完成之后,应该调用回调并继续进行下一个迭代,并执行数组中的下一个动作。

最终发生的事情是执行了第一步,然后执行了所有迭代而没有完成所有迭代的功能。我确保moves数组具有的对象多。

所以这与补间有关,因为当我简单地在moveOb中调用回调时,它将顺序地处理移动。

0 个答案:

没有答案