Топ 5: Лучшие обещания Javascript Polyfills

Polyfill, или polyfiller, представляет собой фрагмент кода (или плагин), который предоставляет технологию, которую вы, разработчик, ожидаете, что браузер предоставит изначально. Сглаживание ландшафта API, если хотите.

Идея Polyfill состоит в том, чтобы обеспечить поддержку API Promise в устаревших браузерах, но используя тот же поток кодирования:

var prom = new Promise(function(resolve, reject) {
// do a thing, possibly async, then…
if (/* everything turned out fine */) {
resolve("Stuff worked!");
}  else {
reject(new Error("It broke"));
}
});
// For IE +10
prom.then(function(result) {
// Do something when async done
}).catch(function(err){
// Rejected
});
// Or for IE-9, where catch is a reserved keyword
// For IE +10
prom.then(function(result) {
// Do something when async done
}, function(err){
// Rejected
});

С любым из следующих Polyfills вы сможете использовать API Promise в любом старом веб-браузере так же, как и в новых браузерах.

Наслаждайтесь нашей коллекцией из 5 лучших Polyfill для Promise API в Javascript.

5. ES6 Promise Polyfill

Это заполнение ES6 Promise. Реализация на основе Реализация Джейка Арчибальда подмножество rsvp.js. Если вам нужны дополнительные функции и дополнительные параметры отладки, проверьте полная библиотека.

Основной целью этой библиотеки является реализация обещаний Javascript, которые соответствуют реализациям браузера и имеют минимально возможный размер. Так что это строго полифилл спецификации ES6 Promise и ничего более. Проходит оба Обещания / A + тестовый набор а также тестовый набор rsvp.js. И всего 2,6KB min (или 1KB min + gzip).

4. Обещание Полифилла

Облегченный ESF Promise polyfill для браузера и узла. Придерживается близко к спецификации. Это идеальный полифилл IE, Firefox или любой другой браузер, который не поддерживает обещания. Эта реализация обеспечивает поддержку браузеров начиная с IE8 +, Chrome, Firefox, IOS 4+, Safari 5+, Opera.

По умолчанию обещание-polyfill использует setImmediate, но возвращается к setTimeout для выполнения асинхронно. Если браузер не поддерживает setImmediate (IE / Edge являются единственными браузерами с setImmediate), вы можете увидеть проблемы с производительностью. Использовать setImmediate Polyfill, чтобы исправить эту проблему. setAsap или же setImmediate хорошо работать.

Если вы заполняете window.setImmediate или использовать Promise._immediateFn = yourImmediateFn будет использоваться вместо window.setTimeout

3. BluebirdJS

Bluebird — это полнофункциональная библиотека обещаний с акцентом на инновационные функции и производительность. BluebirdJS позволяет вам создать новое обещание. Переданная функция получит функции разрешения и отклонения в качестве своих аргументов, которые могут быть вызваны для определения судьбы созданного обещания.

Чтобы функция, возвращающая обещание, следовала неявному, но критически важному договору обещаний, вы можете запустить функцию с новым обещанием, если не можете сразу запустить цепочку.

2. Только родные обещания

Только Native Promise — это полизаполнение для собственных обещаний ES6, максимально приближенное (без расширений) к определениям строгой спецификации. Цель этого проекта — стать наименьшим полифиллом для Обещаний, максимально приближенным к тому, что указано в Обещания / А + и будущая спецификация ES6.

Не менее важная цель состоит в том, чтобы не подвергать какой-либо способности изменению состояния обещания извне. Известные ограничения раздел объясняет компромиссы этого баланса. Объект обещания из этого полифилла будет экземпляром конструктора Promise, который облегчает идентификацию подлинных обещаний.

1. ES-6 Promise (подмножество rsvp.js)

Это заполнение обещания EcmaScript6. Реализация является подмножеством rsvp.js Извлеченный @jakearchibald, если вам нужны дополнительные функции и дополнительные параметры отладки, ознакомьтесь с полной библиотекой.

catch это зарезервированное слово в IE<9, meaning выдает синтаксическую ошибку. Чтобы обойти это, вы можете использовать строку для доступа к свойству, как показано в следующем примере.

Однако, пожалуйста, помните, что такая методика уже предусмотрена большинством распространенных минификаторов, что делает полученный код безопасным для старых браузеров и для производства:

promise['catch'](function(err) {
// ...
});

Если вы знаете еще один замечательный полифилл Promises, поделитесь им с сообществом в поле для комментариев. Удачного кодирования!

Ссылка на основную публикацию
Adblock
detector