2016-08-19 108 views
0

我写这个插件,我经常使用,我喜欢它,因为大多数时候我只检查是否true。不过,我刚刚遇到需要知道结果是否为falsejQuery插件成功和失败回调

我想我想要一个successfailure函数内部回调,但我无法弄清楚如何返回它。延期和承诺现在正在破坏一个大脑细胞。

jQuery.fn.exists = function(fn) { 
    if (this.length > 0) { 
     var f = arguments[0]; 
     arguments[0] = function(e) { 
      f(e); 
     } 
     fn.apply(this, arguments); 
     return fn ? this.bind(name, fn) : this.trigger(name); 
    } else { 
     return this.length > 0; 
    } 
} 
+0

这里没有异步代码,所以你可以把两个函数作为你插件的参数,并根据需要调用它们。 –

回答

0

如果你可以提供一个例子,这将是有用的,这个插件做什么和你的最终结果将是什么的目的是有点不清楚。

但是,我知道承诺,看看下面。

jQuery.fn.exists = function(fn) { 
    var deferredObj = jQuery.Deferred(); 
    if (this.length > 0) { 
     var f = arguments[0]; 
     arguments[0] = function(e) { 
      f(e); 
     } 
     fn.apply(this, arguments); 
     if(fn) { this.bind(name, fn) 
     } else { this.trigger(name)} ; 
     deferredObj.resolve("some success value"); 
    } else { 
     deferredObj.reject("Length is not greater then 0"); 
    } 
    return deferredObj.promise; 
} 

的代码片段您已经添加了没有异步操作,所以我觉得用承诺什么那么,一个简单的返回布尔就够没有利润。

一个codepen示例可能有助于明确你的问题是什么。