我在AngularJs中使用$ http,我不知道如何使用返回的promise和处理错误。
@H_404_10@
Promises是对语句的抽象,允许我们与异步代码同步表达自己。它们表示一次性任务的执行。
我有这个代码:
$http .get(url) .success(function(data) { // Handle data }) .error(function(data,status) { // Handle HTTP error }) .finally(function() { // Execute logic independent of success/error }) .catch(function(error) { // Catch and handle exceptions from success/error/finally functions });
他们还提供异常处理,就像正常的代码,你可以从promise返回或你可以抛出。
在同步代码中你想要的是:
try{ try{ var res = $http.getSync("url"); res = someProcessingOf(res); } catch (e) { console.log("Got an error!",e); throw e; // rethrow to not marked as handled } // do more stuff with res } catch (e){ // handle errors in processing or in error. }
promisified版本非常相似:
$http.get("url"). then(someProcessingOf). catch(function(e){ console.log("got an error in initial processing",e); throw e; // rethrow to not marked as handled,// in $q it's better to `return $q.reject(e)` here }).then(function(res){ // do more stuff }).catch(function(e){ // handle errors in processing or in error. });