Примечание. Не повторяющийся вопрос Как всегда запускать некоторый код, когда обещание выполняется в Angular.js, так как это характерно для AngularJS.
Я ищу что-то вроде jQuery done или AngularJS наконец-то.
У меня есть обещание, которое решается или отклоняется. Независимо от того, было ли оно разрешено или отклонено, я хотел бы запустить ту же функцию при выполнении, что и это:
var myPromise = new Promise(function(resolve, reject) {
resolve('Success!');
if( something ) {
resolve('ok');
} else {
reject('not ok');
}
});
myPromise.then(function(data) {
var x = 1;
var y = 2;
console.log(data);
}, function(data) {
var x = 1;
var y = 2;
console.log(data);
});
Приведенный выше код работает. Проблема в том, что я копирую одну и ту же функцию дважды. Я знаю, что у меня может быть именованная функция, подобная этой:
var myPromise = new Promise(function(resolve, reject) { ... });
myPromise.then(doWork, doWork);
function doWork(data) {
var x = 1;
var y = 2;
console.log(data);
}
Но мне интересно, есть ли способ:
- Напишите функцию один раз, вместо
myPromise.then(doWork, doWork);
, и.. - Используйте анонимную функцию вместо именованной. а также..