- https://github.com/edjafarov/PromisePipe/blob/master/src/PromisePipe.js#L34
- для ПромисПайп инстанса тут складываются функции которые чейнятся
- https://github.com/edjafarov/PromisePipe/blob/master/src/PromisePipe.js#L37
- результирующая функция промиспайпа которую мы юзаем, когда ты ее вызываешь, туда прокидываешь дата и контекст
- https://github.com/edjafarov/PromisePipe/blob/master/src/PromisePipe.js#L52
- готовится контекст и враппятся функции
- https://github.com/edjafarov/PromisePipe/blob/master/src/PromisePipe.js#L476-L513
- вот так вряппятся, чтобы в каждую зашел контекст вторым аргументом
- https://github.com/edjafarov/PromisePipe/blob/master/src/PromisePipe.js#L57
- вот тут цепочка запускается непосредственно
- https://github.com/edjafarov/PromisePipe/blob/master/src/PromisePipe.js#L408
- эта функция - сам экшн. по сути это редюс, а там где пробел - решается что же именно будет происходить в этом чейне
return sequence.reduce(function(doWork, funcArr){
return doWork.then(funcArr).catch(errorEnhancer);
}, Promise.resolve(data));
- https://github.com/edjafarov/PromisePipe/blob/master/src/PromisePipe.js#L422
- первый раз заходим в чейн который на нетом энве на котором предыдущий
- https://github.com/edjafarov/PromisePipe/blob/master/src/PromisePipe.js#L444
- если уже не первый раз, мы типа просто пропускаем
- https://github.com/edjafarov/PromisePipe/blob/master/src/PromisePipe.js#L470
- или просто исполняем
- https://github.com/edjafarov/PromisePipe/blob/master/src/PromisePipe.js#L433
- когда первый раз зашли, смотрим если есть транзишн, его исполняем, готовим мессадж и ждем пока респонс отресолвится
- https://github.com/edjafarov/PromisePipe/blob/master/src/PromisePipe.js#L435
- тут формируется мессадж на сервер
- https://github.com/edjafarov/PromisePipe/blob/master/src/PromisePipe.js#L373-L382
- вот он
- https://github.com/edjafarov/PromisePipe/blob/master/src/PromisePipe.js#L378
- это какраз крайние чейны которые должны выполнится (первый и последний)