2016-08-19 1 views
0

J'ai écrit ce plugin, que j'utilise souvent, je l'aime parce que la plupart du temps, je vérifie seulement si true. Cependant, je viens de rencontrer un besoin de savoir si le résultat est false.jQuery plugin avec succès et échecs

Je pense que je veux un rappel success et failure à l'intérieur de la fonction, mais je n'arrive pas à comprendre comment le retourner. Différé et les promesses sont en train de casser une cellule du cerveau en ce moment.

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

Il n'y a pas de code asynchrone ici, donc vous pouvez simplement prendre deux fonctions comme paramètres de votre plugin et les appeler si nécessaire. –

Répondre

0

Si vous pouviez donner un exemple, il serait utile, le but de ce que ce plug-ins et ce que le résultat final sera est un peu clair pour moi. MAIS, je sais des promesses, regardez ci-dessous.

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; 
} 

Le code extrait de code que vous avez ajouté n'a pas async opérations, donc je ne vois aucun profit en utilisant des promesses que si jamais, un booléen de retour simple suffit.

Un exemple de codepen peut aider à clarifier votre problème.