Вложенность работает как положено. Тем не менее, он чище, чем вложенные обратные вызовы.
PersoUtils.getHearthBeat(1)
.progress(function(msg) {
console.log(msg);
})
.fail(function(id, err) {
console.log('ERROR while getting beat' + id + ' : ' + err);
})
.then(function(id, beat) {
console.log('got beat ' + id + ': ' + JSON.stringify(beat));
PersoUtils.getHearthBeat(2)
.progress(function(msg) {
console.log(msg);
})
.fail(function(id, err) {
console.log('ERROR while getting beat' + id + ' : ' + err);
})
.then(function(id, beat) {
console.log('got beat ' + id + ': ' + JSON.stringify(beat));
PersoUtils.getHearthBeat(3)
.progress(function(msg) {
console.log(msg);
})
.fail(function(id, err) {
console.log('ERROR while getting beat' + id + ' : ' + err);
})
.done(function(id, beat) {
console.log('got beat ' + id + ': ' + JSON.stringify(beat));
});
return this;
});
return this;
});
Результат:
- Получение сердцебиения ... 1
- получил удар 1: {"вживую": правда, "отметка времени": "523"}
- Получение сердцебиения ... 2
- получил удар 2: {"вживую": правда, "отметка времени": "590"}
- Получение сердцебиения ... 3
- получил удар 3: {"вживую": правда, "отметка времени": "596"}