5

фона: Я была поставлена ​​задача, чтобы помочь решить проблему со следующей ошибкой:Promise.all() работают вокруг IE 11

'Promise' is undefined' 

который является частью нашего sessionsmodel.js сценария:

return Promise.all(promises); 

promises - это массив действий, которые должны произойти, и если какой-либо отказ, он отклоняется.

Вопрос: На основе моих исследований IE не поддерживает Promise так есть работа вокруг, которые могут быть применены к этому возвращаемого значения, которые будут сделать то же самое?

+1

Да, есть одно решение - Переключить браузер! IE мертв. Он не получит больше обновлений. – Endless

+1

Найдите «обещание полифония» в google – Endless

+2

К сожалению, конечный клиент, вероятно, не пойдет на этот ответ, но я согласен с вами. лол. – Denoteone

ответ

4

Поскольку вы используете Backbone, обещания, вероятно, являются обещаниями jQuery. Вы можете использовать jQuery .when function сделать то же самое, как Promise.all:

return $.when.apply($, promises); 

Для большинства других простых ситуаций, когда вы называете функции, как save и fetch, вы могли бы избежать обещаний полностью используя предоставленные обратные вызовы:

model.save({ 
    context: this, 
    success: this.onModelSuccess 
}); 

Нет необходимости использовать другую библиотеку, потому что Backbone уже использует jQuery (по умолчанию), если вам не нравится jQuery deferred или что вы используете что-то еще вместо jQuery.

1

ES6 Promise спецификация была реализована "хорошие" библиотеки как Q, When, RSVP, Bluebird, Lie и многое другое ...

Если вы хотите узнать больше о Обещания, проверьте эту ссылку: Promises