javascript - AngularJS $http.get razlika između then i success callback
Želio bih razumjeti razliku između then callbacka i success callbacka kada se pozivaju preko HTTP GET. Kada koristim then callback, vraća podatke, ali sa success callbackom ne vraća. Ispod je kod
Zatim povratni poziv
$http.get(url).
then(function(response) {
response.data.data;});
Poziv za uspjeh
$http.get(url).
success(function(response) {
response.data;});
Odgovor #1
Čini se da je vaš problem oko ovoga:
$http.get('/someUrl').success(function(data, status, headers, config) {
to je drugačiji povrat od then,
metoda
thenza registraciju povratnih poziva, a ti povratni pozivi primit će jedan argument - objekt koji predstavlja odgovor
Drugim riječima, trebali biste ovo raditi:
$http.get(...).success(function(data){ console.log(data) })
$http.get(...).then(function(response){ console.log(response.data) })
I naravno razlike u povezivanju, ali čini se da nisu povezane s vašim problemom:
then()
Ako povežete then(), povratni pozivi će se izvršavati uzastopno nakon što svaki završi, jer svaki put vraća novi objekt obećanja u lancu
success() (zastarjelo* zajedno s error())
Ako povežete success() pozive, povratne funkcije će se izvršavati paralelno, jer vraća izvorni objekt obećanja
*success i error su zastarjeli, pogledajte odjeljak Obavijest o zastarijevanju u $http dokumentaciji
Odgovor #2
možete koristiti bilo koji od .then ili .success, a kod povratnog poziva ovisi o metodi koju koristite.
.then() će imati dva argumenta: prvi je rukovatelj uspjehom, a drugi je rukovatelj pogreškom. Rukovatelj uspjehom unutar then() može se napisati na drugi način, naziva se .success. Glavna razlika između rukovatelja uspjehom unutar then() i .success funkcije je u tome što .success ima 4 argumenta (data, status, headers, config), dok rukovatelj uspjehom u then() ima samo jedan argument koji sadrži (data, status, headers, config) ugrađene u taj jedan argument, ali možete mu pristupiti na primjer kao (response.data, response.status itd...).
