Works by

Ren's blog

@rennnosuke_rk 技術ブログです

【AngularJS】AngularJS1.6の$httpでは、success()/error()の代わりにthen()/catch()を使う

少し嵌ったのでメモ。
AngularJS1.6の$httpでは、HTTPレスポンスが返ってきたときに走る処理を記述するsuccess()error()が非推奨、もとい使用不可な状態となっていました。

Due to b54a39, $http's deprecated custom callback methods - success() and error() - have been removed. You can use the standard > then()/catch() promise methods instead, but note that the method signatures and return values are different. success(fn) can be replaced with then(fn), and error(fn) can be replaced with either then(null, fn) or catch(fn).

then()とcatch()で置き換えられると書かれています。
どうやら$http()の返戻値自体、promiseライクなオブジェクトに置き換えられた模様。

const url = 'https://hoge.com';

const success = function(response){
  // on success
};

const error = function(response){
  // on error
};

/*
 * before
 */

// syntax error
$http({
  method: 'GET',
  url: url
})
.success(success)
.error(error);

/*
 * before
 */

// OK!
$http({
  method: 'GET',
  url: url
})
.then(success)
.catch(error);

// またはthenの第一引数にsuccess,第二引数にerror時の処理を渡す
$http({
  method: 'GET',
  url: url
})
.then(success)
.catch(error);

AngularJSとしてはメジャーアップデートなのかもしれませんが、単純な非推奨ではなく使用自体できなくなるのは厄介ですね。 (Swiftほどではありませんが)