j'applique une fonction qui a reporté la valeur de retour et dans la fonction I ont beaucoup imbriquées expressions conditionnelles:Comment éviter un "retour" implicite dans coffeescript dans les expressions conditionnelles?
par exemple:
deferred = Q.defer()
FS.readFile("foo.txt", "utf-8", (error, text) ->
if error
deferred.reject(new Error(error))
else
deferred.resolve(text)
)
return deferred.promise
qui que seront compilés dans:
var deferred;
deferred = Q.defer();
FS.readFile("foo.txt", "utf-8", function(error, text) {
if (error) {
--> return <-- deferred.reject(new Error(error));
} else {
--> return <-- deferred.resolve(text);
}
});
return deferred.promise;
Je n'ai besoin que du dernier retour, mais pas du if/else (-> return < - dans le code compilé)
Comment puis-je éviter un tel comportement (retours implicites là où ils ne sont pas nécessaires) du compilateur coffeescript?
Ce n'est pas le problème que vous croyez. Les retours en question reviennent de la fonction de rappel interne. C'est un comportement souhaitable, et cela n'interfère en aucune façon avec le 'retour 'de votre fonction externe. – meagar