Сообщение от PeaceCoder
|
А как такое реализует Deffered:
|
Например как-то так
function test(a){
return function(){console.log(a);}
}
var pause = $.Deferred();
A = A.pipe(test('a')).pipe(test('b')).pipe(function(){return pause;})
setTimeout(function(){
pause.resolve();
},1000)
A.pipe(test('c')).pipe(function(){
var tmp = $.Deferred();
tmp.pipe(test('e')).pipe(test('f'));
console.log(11);
tmp.resolve();
return tmp;
}).pipe(test('d')).pipe(test('g'));
console.log('end');
Замечания о том, что этот код делает не тоже, что и ваш код, рассматриваются только после того, как вы дадите ответы на следующие вопросы:
а)что все-таки делают на самом деле .sync(true) .sync(false) ?
б) почему this.sync(true).test('e').test('f') может выполнится, а может и нет? от чего это зависит
в) Если я правильно понял(догадался) работу .sync(true), то после него не будут выполнены ни .test('e').test('f'), ни .test('d').test('g'); до тех пор, пока не будет вызван еще один .sync(false)