无法读取未定义的属性“ promise”

卢卡斯

我有以下代码:

var someFunction = {
    option01 : function($el){
      $el.css('color', 'red');   
    },
    option02 : function($el){
      $el.css('background-color', 'blue');
    }    
}

var my_div = $('.my_div');

someFunction.option01(my_div).promise().done(function() {
    console.log('option01 done');

    someFunction.option02(my_div);
});

我正在尝试达到一些Promise依赖性,但是关于此代码,我有一个错误,即:Uncaught TypeError: Cannot read property 'promise' of undefined有人可以帮忙吗?

马蒂亚斯·比伦斯(Mattias Buelens)

这没有任何意义。

首先,.promise()是jQuery对象的方法,但option01不返回jQuery对象(实际上,它不返回任何内容)。如果您想option01返回$el,请执行以下操作:

option01 : function($el){
  $el.css('color', 'red');
  return $el;
}

或者,由于.css是可链接的:

option01 : function($el){
  return $el.css('color', 'red');
}

更重要的是,我不明白为什么你需要承诺在所有当函数开始某些会在稍后产生结果的东西时,承诺是有帮助的例如,当一个函数开始动画或AJAX请求时,它可以返回该动画/ AJAX完成时的承诺。

option01不会做任何长时间运行的操作(例如动画或AJAX请求)。.css呼叫立即生效,他们一旦他们返回来完成。因此,当option01返回时,它就完成了...因此,您可以执行以下操作:

someFunction.option01(my_div);
someFunction.option02(my_div);

我只是不确定您要在这里实现什么。您的示例代码是否足以代表这些功能应实际执行的操作?

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章