Показать сообщение отдельно
  #25 (permalink)  
Старый 05.07.2018, 18:16
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,590

Alexandroppolus, концептуально как-то так:
(function(prototype){
  const then = prototype.then;
  prototype.state = 'pending';
  prototype.then = function(){
    const next = then.apply(
      then.call(
        this,
        resolve => {
          this.state = 'fulfilled';
          return resolve;
        }, 
        reject => {
          this.state = 'rejected';
          throw reject;
        }
      ), 
      arguments
    );
    return next;
  }
}(Promise.prototype));

+для Promise.resolve/reject надо перегрузку, ешё мб что-то с catch и final.
+отдельно обработку для случаев когда promise возвращает не promise(передавать в таких случаях статус с this на next, ибо оный в любом случае не поменяется)
+ ...
__________________
29375, 35

Последний раз редактировалось Aetae, 05.07.2018 в 18:25.
Ответить с цитированием