Promise For ES
✨ Реализация Promise в соответствии со стандартом ES2021, основанная на синтаксисе ES3 и обладающая сверхвысокой совместимостью. Также соответствует стандартам ECMA-262 и Promises/A+.
Лучший способ изучить Promise — это реализовать его самостоятельно.
Характеристики:
Поддержка:
Способность | Версия | Поддержка |
---|---|---|
new Promise(executor) | ES2015 | ✔ |
Promise.prototype.then(onFulfilled, onRejected) | ES2015 | ✔ |
Promise.prototype.catch(onRejected) | ES2015 | ✔ |
Promise.prototype.finally(onFinally) | ES2018 | ✔ |
Promise.resolve(value) | ES2015 | ✔ |
Promise.reject(reason) | ES2015 | ✔ |
Promise.all(iterable) | ES2015 | ✔ |
Promise.race(iterable) | ES2015 | ✔ |
Promise.allSettled(iterable) | ES2020 | ✔ |
Promise.any(iterable) | ES2021 | ✔ |
Установка:
npm i -S promise-for-es
Использование:
// ES Module
import 'promise-for-es/polyfill';
// CommonJS
require('promise-for-es/polyfill');
// ES Module
import Promise from 'promise-for-es';
// CommonJS
const Promise = require('promise-for-es');
Основная логика: На примере следующего кода:
const executor = (resolutionFunc, rejectionFunc) => {
// Бизнес-логика
};
const p1 = new Promise(executor);
p1.then(onFulfilled, onRejected);
p2
;p1
:
onFulfilled
в fulfill list, а onRejected
— в reject list;onFulfilled
, p2
и p1
;onRejected
, p2
и p1
.p2
.resolutionFunc
и rejectionFunc
;executor
с resolutionFunc
и rejectionFunc
в качестве параметров.value
является thenable, создаёт микрозадачу с value
и возвращает;p1
на «fulfilled»;p1
на «rejected»;Тестирование:
npm run test:aplus
запускает тест на соответствие Promises/A+;npm run test:es6
запускает promises-es6-tests;npm run test:core-js
запускает тесты core-js, связанные с Promise.Ссылки:
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )