Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么notify不想在我的延迟示例中工作?_Javascript_Jquery_Deferred - Fatal编程技术网

Javascript 为什么notify不想在我的延迟示例中工作?

Javascript 为什么notify不想在我的延迟示例中工作?,javascript,jquery,deferred,Javascript,Jquery,Deferred,我刚刚开始学习jquery。在我到达通知区之前,一切都很顺利。你会看到我的代码中有一部分被注释掉了,我认为我可以使用notify,但不能使用 var obj = {}; $('div').each(function(i){ $(this).fadeIn().fadeOut(1000 * (i + 1),function(){ console.log(i + " has fade out"); }); // I thought this would work but .not

我刚刚开始学习jquery。在我到达通知区之前,一切都很顺利。你会看到我的代码中有一部分被注释掉了,我认为我可以使用notify,但不能使用

var obj = {};

$('div').each(function(i){
  $(this).fadeIn().fadeOut(1000 * (i + 1),function(){
    console.log(i + " has fade out");
  });
  // I thought this would work but .notify is not a function?
  $('div').notify(i);
});

$('p').each(function(i){
  $(this).fadeIn().fadeOut(1000 * (i + 1),function(){
    console.log(i + " has fade out");
  });
});

$('div').promise(obj).done(function(){
  console.log("done");
}).progress(function(value){
  console.log(value);
});

obj.done(function(){
  console.log("obj done method called");
});

obj.fail(function(err){
  console.log(err);
});

obj.always(function(){
  console.log("obj always method called");
});

$('div').promise().then(
  function(result){
    console.log(result);

    result.each(function(){
      $(this).fadeIn()
    });

    //$(result[0]).fadeIn();
  },
  function(error){ },
  function(value){ }
);

$.when($('div'),$('p')).done(function(a,b){
  console.log("all done with both");
});
.notify()
方法只能应用于
延迟的
对象
$('div')
返回jQuery集合,而不是延迟对象。使用
.promise()
获得一个
延迟的
对象,该对象在选定元素的所有动画完成后解析。另外,在
.each()
循环中,您应该只调用当前元素的
.notify()
,而不是调用所有
div
元素

因此,它应该是:

$(this).promise().notify(i);

当你说它不起作用的时候。什么意思?您收到一个错误或它不能按预期工作?
。notify()
是一个
延迟的
对象的方法
$('div')
返回一个
jQuery
对象,而不是
延迟的
对象。另外,它似乎在jQuery版本3.X
$(this.promise().notify(i)中删除了notify也不起作用,因为
.notify()
,像
.resolve()
和`.reject(),是一种延迟方法,而不是Promise方法。我以为它们是一样的,现在我看到
Promise
延迟
的子集。你可以从延期付款中得到承诺,但反过来不行。