Per error management configuration Bluebird Выдает ошибку, если не поймать обработчик зарегистрирован когда обещание отвергается, не дожидаясь, чтобы увидеть, если один будет добавлена в будущем. Обратите внимание, что проверка для обработчика отклонения должна выполняться асинхронно с потоком, который устанавливает цепочку обещаний. Как говорится, «некоторые шаблоны программирования приведут к ложным срабатываниям». Да, действительно?
С другой стороны, ошибки неперехваченных исключений не являются частью стандарта ES6, и реализации обрабатывают их по-разному: Firefox ждет или используется для ожидания до момента GC, в то время как Chrome истекает (или используется для таймаута) с ошибка «возможного отказа от обезвреженного обещания».
Проконсультироваться с документацией на Blue Bird для возможных решений для Bluebird, обещая ошибку перед прикреплением обработчика.
Но поскольку оба примера синхронно присоединить обработчик отклонять для обещания p
, причина исключения, как представляется, лежит в другом месте.
Благодаря ответу @DJ, но с другой интерпретацией. Во втором примере then
возвращает обещание, которое отклоняется, если p
отклонено и не имеет обработчика отклонения. Обещание, возвращенное .then
, скорее всего, будет ошибкой.
Это CoffeeScript? Может быть, добавить тег coffeescript? – dtkaias
Вы его coffeescript. просто добавил тег. –