Если у нее есть функция .then
- это стандартные библиотеки обещаний , только .
В спецификации Promises / A + есть понятие, называемое then
, которое в основном является «объектом с методом then
». Обещания будут и должны ассимилировать все с помощью метода then. Все обещания, о которых вы говорили, делают это.
Если мы посмотрим на спецификацию :
2.3.3.3, если
blockquote>then
это функция, назовите ее с x как это, первый аргумент solvePromise и второй аргумент rejectPromiseОн также объясняет обоснование этого дизайнерского решения:
Эта обработка
blockquote>then
ables позволяет реализовать обеими реализациями, пока они выставляют метод Promises / A + -compliantthen
. Он также позволяет реализациям Promises / A + «ассимилировать» несоответствующие реализации с разумными тогда методами.Как вы должны решить
Вы не должны - вместо этого назовите
Promise.resolve(x)
(Q(x)
в Q), который всегда преобразует любое значение или внешнееthen
в надежное обещание. Это безопаснее и проще, чем выполнять эти проверки самостоятельно.действительно должен быть уверен?
Вы всегда можете запустить его через набор тестов : D