Нет, then
имеет два параметра, поэтому вам нужно создать две функции:
function successCallback(commit, name) {
return response => {
commit(name, response)
return Promise.resolve(response);
};
}
function failureCallback(commit, name) {
return error => {
commit(name)
return Promise.reject(error);
};
}
Затем вызывать их как
login({ commit }, user) {
return AuthService.login(user).then(successCallback(commit, 'loginSuccess'), failureCallback(commit, 'loginFailure'));
},
register({ commit }, user) {
return AuthService.register(user).then(successCallback(commit, 'registerSuccess'), failureCallback(commit, 'registerFailure'));
}
Чтобы создать одного помощника, вы должны либо оберните весь then
обратный вызов
function handle(commit, name, promise) {
return promise.then(successCallback(commit, name+'Success'), failureCallback(commit, name+'Failure');
}
login({ commit }, user) {
return handle(commit, 'login', AuthService.login(user));
},
register({ commit }, user) {
return handle(commit, 'register', AuthService.register(user));
}
или используйте синтаксис расширения в вызове и верните кортеж из помощника:
function handleCallbacks(commit, name) {
return [successCallback(commit, name+'Success'), failureCallback(commit, name+'Failure')];
}
login({ commit }, user) {
return AuthService.login(user).then(...handleCallbacks(commit, 'login'));
},
register({ commit }, user) {
return AuthService.register(user).then(...handleCallbacks(commit, 'register'));
}