Я реализую функцию, которая имеет отсроченное значение для возврата и в функции У меня есть много вложенных условных выражений:Как избежать неявного «возврата» в coffeescript в условных выражениях?
например:
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
, который чем будет составлен в:
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;
Мне нужен только последний возврат, но не возврат if/else (т.е. -> return < - в скомпилированном коде)
Как я могу избежать такого поведения (неявные возвращения там, где они не нужны) компилятора coffeescript?
Это не проблема, о которой вы думаете. Возвращенные данные возвращаются из внутренней функции обратного вызова. Это желательно поведение, и оно никак не мешает «возврату» вашей внешней функции. – meagar