Promise.all() обойти для IE 11 с Backbone

Справочная информация: мне было поручено помочь решить проблему со следующей ошибкой:

'Promise' is undefined'

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

return Promise.all(promises);

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

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

3 ответа

Решение

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

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

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

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

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

Я рекомендую вам использовать полифилл.

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

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

Другие вопросы по тегам