Здравствуйте! Пытаясь понять вроде бы несложную тему промисов, заодно пробую самостоятельно реализовать минимальное API (then, catch), но некоторые затупы не могу преодолеть. Понял я вот что:
1) У промиса должно быть 3 состояния (pending, fulfilled, rejected)
2) У промиса есть 2 метода then() и catch()
3) При создании экземпляра промиса
var promise = new Promise(fuction(resolve, reject))
назначается состояние pending, а вот с вызовом resolve непонятно - нужно его сразу вызвать или сложить в массив (и когда его в этом случае вызывать)? И зачем Promise() принимает в аргументы функцию с аргументами, а не просто аргументы как метод then()?
4) С этим пунктом уже туго, но я так понимаю, что если у нас вызов функции сложился в массив, то аргументы вызова метода then() мы складываем в тот же массив, чтобы потом поочерёдно их вызывать?
5) Ну а тут реализация метода catch(), который получает управление, если не срабатывает resolve, но как это определить? Понятно, что ошибку через try/catch можно поймать, а применимо ли это вообще здесь?
Может есть какие-нибудь материалы по алгоритмы работы промисов? Я уже посещал
https://promisesaplus.com/, но "переварить" не могу этот текст