Я читаю некоторый учебник по angular.js и наткнулся на это выражение:
.then(handleRequest, handleRequest)
Мне было интересно, что значит передать 2 из тех же функций в.then()?
Здесь больше контекста:
function MainCtrl(user, auth) {
var self = this;
function handleRequest(res) {
var token = res.data ? res.data.token : null;
if(token) { console.log('JWT:', token); }
self.message = res.data.message;
}
self.login = function() {
user.login(self.username, self.password)
.then(handleRequest, handleRequest)
}
...
}
angular.module('app', [])
.controller('Main', MainCtrl)
....
})();
И исходное руководство можно найти здесь: https://thinkster.io/angularjs-jwt-auth
первый для successCallback и второй для errorCallback. Так
// Simple GET request example:
$http({
method: 'GET',
url: '/someUrl'
}).then(function successCallback(response) {
// this callback will be called asynchronously
// when the response is available
}, function errorCallback(response) {
// called asynchronously if an error occurs
// or server returns response with an error status.
});
Обещает немного сложный образ, чтобы понять. Лучший ресурс для меня
then
метод определяется как:
promise.then(onFulfilled, onRejected)
Первый аргумент вызывается, когда выполняется обещание.
Второй аргумент вызывается, когда обещание отклоняется.
Передача той же функции обратного вызова, что и оба аргумента, означает, что автор намеревался использовать одну и ту же функцию для обработки как выполнения, так и отказа от обещания.
Прочтите полную спецификацию для получения более подробной информации.
.finally(handleRequest)
которое на самом деле должно было использоваться.