我有一个用于处理错误的辅助函数。我试图将其作为参数传递给 promise 中的 catch
函数:
fetchRecords().then (found) ->
$scope.recprds = found;
.catch( Session.handleError )
.finally( -> $scope.querying = false )
这会被解析为以下 Javascript:
fetchRecords().then(function(found) {
return $scope.records = found;
})["catch"](Session.handleError)["finally"](function() {
return $scope.querying = false;
});
这种情况下会出现 JavaScript 错误,因为 finally
不是我的 Session.handleError
函数的属性。
我应该使用不同的语法吗?
最佳答案
首先:您应该删除;和()不需要它们。
单词尝试捕捉,最后是保留的单词。您应该像coffeescript.org页面上的示例一样使用它们:
try
allHellBreaksLoose()
catsAndDogsLivingTogether()
catch error
print error
finally
cleanUp()
如果您更改了函数名称,则CoffeeScript中的链接正在正常工作。因此,您应该重命名助手功能,链接应起作用。
fetchRecords().then (found) ->
$scope.recprds = found
.helpercatch Session.handleError
.helperfinally -> $scope.querying = false
解析:
fetchRecords().then(function(found) {
return $scope.recprds = found;
}).helpercatch(Session.handleError).helperfinally(function() {
return $scope.querying = false;
});
关于javascript - CoffeeScript转换尝试/捕获/最终在使用功能引用时奇怪地阻止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34143638/