2
我正在使用AngularJS應用程序。我有一個表格。提交時,我正在調用一個函數。我已經使用的JavaScript 的try/catch/finally塊Javascript - 最終在嘗試完成之前執行AngularJS塊
$scope.save = function() {
try {
//Block of code to try
$scope.submit.text = "Submitting";
$scope.submit.disable = true;
$timeout(function(){
alert('successfully saved');
}, 5000);
}
catch(err) {
//Block of code to handle errors
}
finally {
alert("finally");
$scope.submit.text = "Submit";
$scope.submit.disable = false;
}
}
我用一個定時器現在。但後來我可能會使用AJAX調用。問題是
finally塊在時間結束前被執行。如何解決這個問題?
你需要移動你的try catch finally塊在timeout函數中,因爲timeout函數是異步的。 – nikhil
請查看:http://know.cujojs.com/tutorials/async/mastering-async-error-handling-with-promises – franciscod
您也可以將任何異步函數調用轉換爲'kriskowal q'-like promise對象,它在AngularJS中廣泛使用,名爲'$ q'。 – mostruash