npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@diag/promise

v1.0.3

Published

Fast promise library with extended possibilities compatibile with old browsers es3+

Readme

Diag Promise

Расширяет функционал нативных промисов, работает быстрее, чем Promise на Nodejs < 10 и bluebirdjs, а также работает без полифилов во всех старых браузерах.

Начало работы

var Promise = require("@diag/promise");

Для ES6:

import Promise from "@diag/promise";

Использование

В приведенном ниже примере показаны основные приемы использования библиотеки. Полную документацию по апи библиотеки можно найти в разделе документации.

var Promise = require("@diag/promise");

Promise.
    when(func()_or_Promise_or_value).

    promisify(func(resolveCallb, rejectCallb) {
        any_strange_old_async_code;
        (ok ? resolveCallb : rejectCallb)(value);
    }).
    then(
         func(value)_or_Promise_or_value,
         catchFunc(err)_or_value).
    truth(
          trueFunc(value),
          falseFunc(value),
          catchFunc(err)_or_value).
    lie(
          falseFunc(value),
          trueFunc(value),
          catchFunc(err)_or_value).

    caught(catchFunc(err)_or_value).

    lastly(finallyFunc() {...}).

    anyway(funcAndCatchFunc(value_or_err)).

    fork(
         condition,
         trueFunc(value),
         falseFunc(value)).

    each(func(arrElem) {...});

Promise.each(array, func(arrElem) {...});

Promise.thrown(errorObject);

Promise.all(
            parallelFunc_or_Promise_or_value1,
            parallelFunc_or_Promise_or_value2,
            ...).
	spread(func(result1, result2, ...) {...});

Promise.serial(
               func_or_Promise_or_value1,
               func_or_Promise_or_value2,
               ...);

Документация

new Promise();

Создает новый промис

.anyway(anyway);

То же, что .finally. Функция будет выполнена вне зависимости от того, успешно или с ошибкой выполнился промис.

.cancel();

Отменяет выполнение конкретного промиса

.cancelAll();

Отменяет выполнение всей цепочки промисов

.caught(reject);

Предоставляет промис только для rejection

.caughtReturn(reject);

Предоставляет промис только для Promise.$return

.clone();

Копирует промис

.each(func);

Исполняет переданную функцию для каждого значения массива

.exists(func);

Возвращает true, если функция-предикат вернула true на одном из элементов массива

.filter(func);

Работает как array.filter

.fork(expression, truth, lie);

Исполняет функцию truth или lying в зависимости от значения expression

.get(enquirer);

Передает текущий промис в аргумент функции enquirer

.ifPendingAfter(time, callback);

Исполняется находится ли промис в состоянии Pending через time милисекунд

.isCanceled();

Проверяет находится ли промис в состоянии Canceled

.isFulfilled();

Проверяет находится ли промис в состоянии Fulfilled

.isPending();

Проверяет находится ли промис в состоянии Pending

.isRejected();

Проверяет находится ли промис в состоянии Rejected

.lastly(anyway);

То же что .finally. Функция будет выполнена вне зависимости от того, успешно или с ошибкой выполнился промис. Пробрасывает значения и исключения из цепочки промисов.

.lie(lie, truth, reject);

Выполняется, если полученное значение цепочки было falsy

.log(enquirer);

Включает режим логирования с переданной функцией

.map(func);

Работает как .map

.promisify(executor);

Превращает асинхронную функцию с колбеками в Promise

.reject(reason, type);

Завершает выполнение промиса с исключением

.resolve(value, type);

Завершает выполнение промиса со значением

.spread(resolve, reject);

Раскрывает массив в аргументы

.tap(resolve);

Как then, только переданное на вход значение будет возвращено следующему в цепочке

.then(resolve, reject, flags, lie);

Предоставляет промис для resolution и/или для rejection

.timeout(time);

Исполняет промис спустя заданное время

.truth(truth, lie, reject);

Выполняется, если полученное значение цепочки было truthly


Promise.$break(value);

Используется только в итерируемых промисах. Работает как break в циклах.

Promise.$continue(value);

Используется только в итерируемых промисах. Работает как continue в циклах.

Promise.$return(value);

Служит для полного выхода из цепочки промисов (как thrown). Обработать результат функции можно в .caughtReturn()

Promise.all(promises);

Дожидается выполнения всех переданных значений/функций/промисов, возвращая массив результатов

Promise.args(array);

Возвращает промис, массив аргументов которого будет раскрыт в список аргументов следующего промиса

Promise.begin(begin, wrapped);

Оборачивает переданные функции в промис. begin() выполняется перед wrapped()

Promise.each(arrayOrCount, func, innerValue, flow);

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

Promise.exists(array, func, flow);

Возвращает true, если функция-предикат вернула true на одном из элементов массива. Если установить параметр flow, то переданные функции будут выполняться асинхронно.

Promise.filter(array, func, flow);

Работает как array.filter. Если установить параметр flow, то переданные функции будут выполняться асинхронно.

Promise.fork(expression, truth, lying);

Исполняет функцию truth или lying в зависимости от значения expression

Promise.getTimeTracker();

Позволяет получить техническую информацию о времени работы промиса. Используется только в promisify

Promise.is(obj);

Определяет является ли переданный в аргументах obj промисом

Promise.map(array, func, flow);

Работает как [].map. Если установить параметр flow, то переданные функции будут выполняться асинхронно.

Promise.promise(wrapped);

Декорирует функцию, превращая результат выполнения в промис

Promise.promisify(executor, logName, timeLimit);

Превращает асинхронную функцию с колбеками в промис

Promise.props(array, flow);

Работает как Promise.map, но подходит не только для итерируиемых сущностей, но и для объектов. Если установить параметр flow, то переданные функции будут выполняться асинхронно.

Promise.reduce(array, func, accumulator);

Работает как [].reduce

Promise.reject(value);

Заканчивает выполнение промиса с исключением

Promise.resolve(value);

Завершает выполнение промиса со значением

Promise.serial(promises);

Дожидается выполнения всех переданных значений/функций/промисов, возвращая массив результатов. В отличии от Promise.all, все, что было переданно выполняется последовательно.

Promise.setLoggers(loggersObj);

Устанавливает собственные колбеки для логирования. По умолчанию логирование в консоль.

Promise.singleton(creator, update);

Создает промис только при его необходимости (реализует одноименный патерн)

Promise.thrown(reason, code);

Эмуляция throw. Нужна для ie, из-за его тяжёлых исключений (thrown в 1000 раз быстрее нативного throw).

Promise.timeout(timeMilliseconds, value);

Исполняет промис спустя заданное время

Promise.wait(condition, logName, timeLimit, period);

Выполняет цепочку промисов после выполнения функции condition, вызывая condition() каждые period мс (по умолчанию 100)

Promise.when(executor);

Возвращает результат переданной функции в виде промиса

Обратная связь

Обо всех багах/предложениях пишите на почту [email protected] с темой письма "diag/promise" или в канал Slack #diagnostics_support.

Лицензия

The MIT License (MIT)