История изменений
Исправление Y, (текущая версия) :
А что, если reject необходимо сделать из какого-то другого контекста, в коллбеке от какой-то асинхронной функции?
Затем, что она передаётся в ближайший reject.
Также, как и любая выброшенная (throw) ошибка.
Ну генерируй, просто это уже не будет в стиле Promise имхо.
Нет ничего плохого, чтобы выбрасывать ошибки внутри промисов вместо вызова reject, это часть спецификации Promise.
Точно также, как вместо resolve(data)
можно писать return data;
и оно упадёт в следующий then(function(data) {...})
.
Кстати, с AJAX'ом хороший пример, только неполный, ответ от сервера придёт ведь уже после завершения метода, в котором создаётся Promise и производится запрос, в коллбеке с ответом только reject/resolve'ом справиться можно.
UPD: идея в том, что reject — функция, её можно передать в какой-нибудь внешний код или вызвать в асинхронном коллбеке, передав через замыкание. То есть, вызвать уже после завершения функции, в которой создаётся Promise (когда throw уже делать бесполезно).
Исправление Y, :
А что, если reject необходимо сделать из какого-то другого контекста, в коллбеке от какой-то асинхронной функции?
Затем, что она передаётся в ближайший reject.
Также, как и любая выброшенная (throw) ошибка.
Ну генерируй, просто это уже не будет в стиле Promise имхо.
Нет ничего плохого, чтобы выбрасывать ошибки внутри промисов вместо вызова reject, это часть спецификации Promise.
Точно также, как вместо resolve(data) можно писать return data; и оно упадёт в следующий then(function(data) {...}).
Кстати, с AJAX'ом хороший пример, только неполный, ответ от сервера придёт ведь уже после завершения метода, в котором создаётся Promise и производится запрос, в коллбеке с ответом только reject/resolve'ом справиться можно.
UPD: идея в том, что reject — функция, её можно передать в какой-нибудь внешний код или вызвать в асинхронном коллбеке, передав через замыкание. То есть, вызвать уже после завершения функции, в которой создаётся Promise (когда throw уже делать бесполезно).
Исправление Y, :
А что, если reject необходимо сделать из какого-то другого контекста, в коллбеке от какой-то асинхронной функции?
Затем, что она передаётся в ближайший reject.
Также, как и любая выброшенная (throw) ошибка.
Ну генерируй, просто это уже не будет в стиле Promise имхо.
Нет ничего плохого, чтобы выбрасывать ошибки внутри промисов вместо вызова reject, это часть спецификации Promise.
UPD: идея в том, что reject — функция, её можно передать в какой-нибудь внешний код или вызвать в асинхронном коллбеке, передав через замыкание. То есть, вызвать уже после завершения функции, в которой создаётся Promise (когда throw уже делать бесполезно).
Исправление Y, :
А что, если reject необходимо сделать из какого-то другого контекста, в коллбеке от какой-то асинхронной функции?
Затем, что она передаётся в ближайший reject.
Также, как и любая выброшенная (throw) ошибка.
UPD: идея в том, что reject — функция, её можно передать в какой-нибудь внешний код или вызвать в асинхронном коллбеке, передав через замыкание. То есть, вызвать уже после завершения функции, в которой создаётся Promise (когда throw уже делать бесполезно).
Исправление Y, :
А что, если reject необходимо сделать из какого-то другого контекста, в коллбеке от какой-то асинхронной функции?
Затем, что она передаётся в ближайший reject.
Также, как и любая выброшенная (throw) ошибка.
UPD: идея в том, что reject — функция, её можно передать в какой-нибудь другой код или вызвать в асинхронном коллбеке, передав через замыкание. То есть, вызвать уже после завершения функции, в которой создаётся Promise (когда throw уже делать бесполезно).
Исправление Y, :
А что, если reject необходимо сделать из какого-то другого контекста, в коллбеке от какой-то асинхронной функции?
Затем, что она передаётся в ближайший reject.
Также, как и любая выброшенная (throw) ошибка.
UPD: идея в том, что reject — функция, её можно передать в какой-нибудь другой код или вызвать в асинхронном коллбеке через замыкание. То есть, вызвать уже после завершения функции, в которой создаётся Promise (когда throw уже делать бесполезно).
Исправление Y, :
А что, если reject необходимо сделать из какого-то другого контекста, в коллбеке от какой-то асинхронной функции?
Затем, что она передаётся в ближайший reject.
Также, как и любая выброшенная (throw) ошибка.
UPD: идея в том, что reject — функция, её можно передать в какой-нибудь другой код или вызвать в асинхронном коллбеке через замыкание. То есть, вызвать уже после завершения функции, в которой создаётся Promise (откуда throw уже делать бесполезно).
Исправление Y, :
А что, если reject необходимо сделать из какого-то другого контекста, в коллбеке от какой-то асинхронной функции?
Затем, что она передаётся в ближайший reject.
Также, как и любая выброшенная ошибка.
UPD: идея в том, что reject — функция, её можно передать в какой-нибудь другой код или вызвать в асинхронном коллбеке через замыкание. То есть, вызвать уже после завершения функции, в которой создаётся Promise (откуда throw уже делать бесполезно).
Исходная версия Y, :
А что, если reject необходимо сделать из какого-то другого контекста, в коллбеке от какой-то асинхронной функции?