我在jQuery中有几个动画,并希望在它们全部完成后运行函数。我创建了promise对象并将其放在" promises bucket"中。不幸的是,我的动画正在立即得到解决。代码中是否缺少某些内容?我会在5秒钟之前将消息打印到控制台方式。
CoffeeScript中的代码
animBucket = []
animBucket.push $('#a').animate({opacity: 0.5}, 5000).promise()
animBucket.push $('#b').animate({opacity: 0.5}, 5000).promise()
$.when animBucket
.then () ->
console.log 'All animation done'
答案 0 :(得分:2)
在阵列上使用.apply
时,您需要$.when
:
$.when.apply null, animBucket
.then () ->
console.log "all done"
否则,$.when
将数组视为单个已解析的值。调用.apply
将数组的输入转换为varargs。