javascript - CoffeeScript转换尝试/捕获/最终在使用功能引用时奇怪地阻止

标签 javascript angularjs coffeescript promise

我有一个用于处理错误的辅助函数。我试图将其作为参数传递给 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 函数的属性。

我应该使用不同的语法吗?

Try it out on coffeescript.org

最佳答案

首先:您应该删除;和()不需要它们。

单词尝试捕捉,最后是保留的单词。您应该像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/

相关文章:

javascript - 使用 jQuery 向上/向下滑动

javascript - 使用 ng-options Angular 绑定(bind)/填充下拉列表后触发事件

javascript - AngularJS动态添加指令

java - 无法使用 REST 架构和 Angular JS 在 Spring Boot 中映射新 url,并且发布请求未接收对象字段值

coffeescript - 在 CoffeeScript 中使用范围的 for 循环

javascript - 如何根据节点点击到达 URL?

javascript - 如何将值直接传递到指令中?

javascript - 如何在javascript中加载二维数组

javascript - 如何覆盖参数的默认值?

intellij-idea - Intellij IDEA中如何自动上传编译好的coffeescript文件?