Я использую угловые с синей птицей и угловыми синими птицами обещания переопределить встроенное Угловое обещание. После перехода на угловой v1.6.5 при вызове $ interval.cancel возникает начисление исключений. Я проверил более раннюю версию углового и добавил следующий код:
function markQStateExceptionHandled(state) {
state.pur = true;
}
function markQExceptionHandled(q) {
markQStateExceptionHandled(q.$$state);
}
проблема в том, что обещание bluebird не имеет атрибута $$ state и возникает исключение:
> TypeError: Cannot set property 'pur' of undefined
> at markQStateExceptionHandled (angular.js?3437:17654)
> at markQExceptionHandled (angular.js?3437:17657)
> at Function.interval.cancel (angular.js?3437:13650)
> at eval (ng-infinite-scroll.js?6418:180)
> at callback (angular.js?3437:13629)
> at Scope.$digest (angular.js?3437:18515)
> at Scope.$apply (angular.js?3437:18903)
> at tick (angular.js?3437:13619)
Это ошибка в Angular.js. Существует запрос на извлечение, чтобы исправить его, изменив код, чтобы проверить $$state
:
function markQStateExceptionHandled(state) {
if (state) {
state.pur = true;
}
}
Это должно быть 1.6.10. Тем временем вы можете исправить это со стороны Bluebird, выполнив:
Promise.prototype.$$state = {};
Я могу пообещать, что он ничего не испортит со стороны синей птицы и не будет иметь слишком много недостатков, кроме как уродливого взлома.
Promise.prototype.$$state = {}
какой синей птицей все будет в порядке