2015-07-21 71 views
1

我已經使用了,然後,抓住我的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是角度捕捉不是傳統的嘗試捕捉。 請幫助

回答

2

.catch方法AngularJS的$q(由$http使用)是不一樣的一個try { ...} catch { ...塊的catch聲明。您正在使用的try {是錯誤的,您不應該使用它。

只是爲了讓事情更清晰:

catch(errorCallback) - 速記promise.then(null, errorCallback)」。當您在承諾中致電reject時,它是函數callend。 (https://docs.angularjs.org/api/ng/service/ $ q#the-promise-api)

try ... catch聲明是一種內置的JavaScript機制。當您在try塊內使用throw 'some exception'時,將執行catch塊內的代碼。

reject的AngularJS文檔非常清晰:「當將延期/承諾與try/catch/throw的熟悉行爲進行比較時,可以將reject作爲JavaScript中的throw關鍵字。雖然,爲了安全起見,我會添加「儘管在概念上相似,不要混淆!」到:)