我正在实现一个具有延迟返回值的函数,并且在函数内我有许多嵌套的条件表达式:
例如:
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 <--在编译代码中)
如何避免咖啡脚本编译器的这种行为(在不需要的地方隐式返回)?