2015-12-07 2 views
2

У меня есть вспомогательная функция для устранения ошибок. Я пытаюсь передать это в качестве параметра функции catch в обещании:Coffeescript преобразует try/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

+0

Ввод дополнительных круглых скобок вокруг все, но .finally работает, но некрасиво. –

+0

'finally' не доступен как свойство' Session.handleError' в коде, который вы отправили? Какую ошибку вы получаете? – Bergi

+0

@ Bergi, я получал эту ошибку, но теперь я не могу воспроизвести ее. Исходный код работает правильно. :( –

ответ

1

Во-первых, вы должны удалить; и(), где они не нужны.

Слова try catch и, наконец, зарезервированные слова. Вы должны использовать их, как например, на странице 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; 
}); 
+0

Переименование помощников в этом случае не является вариантом, так как это часть углового API обещаний $ q. –

Смежные вопросы