【发布时间】:2013-03-06 08:41:06
【问题描述】:
我正在实现一个具有延迟返回值的函数,并且在函数内我有许多嵌套的条件表达式:
例如:
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 )
如何避免咖啡脚本编译器的这种行为(在不需要的地方隐式返回)?
【问题讨论】:
-
这不是您认为的问题。有问题的返回是从内部回调函数返回的。这是理想的行为,它不会以任何方式干扰您的外部函数的
return。
标签: javascript node.js coffeescript deferred promise