不适当地使用jQuery promise对象。不知道为什么

时间:2012-07-22 20:16:20

标签: jquery coffeescript jquery-deferred

我正在尝试在 coffeescript

中使用它
  $(this).hide().each (index) ->
    $(this).delay(index * 100).fadeIn 1000, arguments.callee
  $(this).promise().done -> console.log 'hey trip'

在au naturale JS中同样的事情

  $(this).hide().each(function(index) {
    $(this).delay(index * 100).fadeIn(1000, arguments.callee)
  });
  $(this).promise().done(function() {console.log 'hey trip' });

我想在动画完成后执行控制台日志。但是这里的代码片段从不传递控制台消息(一般情况下),更不用说动画完成时了。

任何人都知道如何正确使用promise对象吗?

第二次尝试失败

  promise = new $.Deferred ->
  promise.done -> console.log 'hey trip'

  promise.resolve( $(this).hide().each (index) ->
    $(this).delay(index * 100).fadeIn 3000, arguments.callee
  )

第三次失败变异

dfd = $.Deferred ->
dfd.done(
  $(this).hide().each (index) ->
    $(this).delay(index * 100).fadeIn(3000, arguments.callee)
).done -> console.log 'hey trip'

第四次失败的变化

$.when(
  $(this).hide().each (index) ->
    $(this).delay(index * 100).fadeIn(3000, arguments.callee)
).then -> console.log 'hey trip' 

1 个答案:

答案 0 :(得分:2)

这是arguments.callee的{​​{1}}参数。

如果你把它拿出来就行了......见http://jsfiddle.net/alnitak/9VQ48/