YUI minification上的angular catch关键字错误

时间:2015-07-21 14:32:09

标签: javascript angularjs yui

我已经使用了then和catch来进行我的ajax调用:

        try {
            ServiceData.getProductDetails(product).then(function(data) {
                    $scope.productDetails = data;
                })
**Line 445**                    .catch(function(fallback) {
                        $scope.buildProductDetails(product);
                    });
            } catch (err) {
                $scope.buildProductDetails(product);
            }
        };
    }
]);

在缩小时我得到无效catch块的错误:

[ERROR] 445:27:missing name after . operator
[ERROR] 446:32:syntax error
[ERROR] 447:22:'try' without 'catch' or 'finally'
[ERROR] 448:20:missing ; before statement
[ERROR] 449:24:syntax error
[ERROR] 451:9:missing ] after element list
[ERROR] 452:5:syntax error
[ERROR] 453:2:syntax error

我如何告诉YUI .catch是角度捕获而不是传统的try catch。 请帮忙

1 个答案:

答案 0 :(得分:2)

AngularJS .catch中的$q方法(由$http使用)与catch块的try { ...} catch { ...语句不同。您使用的try {是错误的,您不应该使用它。

只是为了让事情更清楚:

" catch(errorCallback) - promise.then(null, errorCallback)"的简写。当你在诺言中调用reject时,它就是一个函数callend。 (https://docs.angularjs.org/api/ng/service/ $ Q#的承诺量-API)

try ... catch语句是内置的JavaScript机制。当您在catch块中使用throw 'some exception'时,会执行try块内的代码。

reject的AngularJS文档非常清楚:"当将deferreds / promises与熟悉的try / catch / throw行为进行比较时,请将reject视为JavaScript中的throw关键字。"但是,为了安全起见,我添加" 虽然在概念上相似,但不要混淆它们!"对此:)