Использование цепных обещаний с.when
У меня есть 2 метода, которые возвращают обещания (сокращенные с не асинхронным разрешает)
function methodA () {
var d = $.Deferred();
d.resolve('A');
return d.promise();
}
function methodB (dependency) {
var d = $.Deferred();
// dependency would be used here
d.resolve('B');
return d.promise();
}
И тогда у меня есть другой метод, который цепляет эти
function chainer () {
return methodA().then(function(result) {
return methodB(result);
});
}
И тогда у меня есть другой метод, который вызывает.when на этом цепочке
function main () {
$.when(chainer()).done(function (answer) {
console.log(answer);
});
}
Ответ, напечатанный на консоли: "А", а не "В", как я ожидал! Почему это? И как я могу получить результат methodB, так как этот метод зависит от methodA.
Спасибо R
1 ответ
Нашел проблему из-за ошибки в jQuery. Мы используем версию 1.7.2, и в реализации.then есть ошибка. Вам все еще нужно использовать устаревший метод.pipe. В более поздних версиях оба работают как положено.