简体中文 | English
✨ A ES2021 Promise implementation based on ES3 has high compatibility, and comply with ECMA-262 and Promises/A+
The best way to learn
Promise
is to implement it.
Ability | Version | Support |
---|---|---|
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');
Using the example below:
const executor = (resolutionFunc, rejectionFunc) => {
// business logic
};
const p1 = new Promise(executor);
p1.then(onFulfilled, onRejected);
p2
;p1
:
onFulfilled
into the fulfill list of p1
, and push onRejected
into the reject list;onFulfilled
, p2
and the result of p1
;onRejected
, p2
and the result of p1
;p2
;resolutionFunc
, rejectionFunc
;executor
with resolutionFunc
and rejectionFunc
as the arguments;value
is thenable, create a micro task with value
, return;p1
to "fulfilled";p1
to "rejected";npm run test:aplus
to run Promises/A+ compliance test;npm run test:es6
to run promises-es6-tests;npm run test:core-js
to run the core-js tests about Promise;Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )