Skip to main content

promise

方便 Promise 使用的工具函数

安装

npm install @jelper/promise

样例

toPromise

import { toPromise } from '@jelper/promise';


// 返回 resolove 情况
toPromise(1) // Promise.resolove(1);
toPromise(true) // Promise.resolove(true);
toPromise('xxxx') // Promise.resolove('xxxx');
toPromise({}) // Promise.resolove({});
toPromise(() => () => 'ok') // Promise.resolove('ok');
toPromise(Promise.resolve('resolove')) //Promise.resolove('resolove');

// 返回 reject 情况
toPromise(false) // Promise.reject(undefined);
toPromise(() => () => false) // Promise.reject(undefined);
toPromise(Promise.reject('reject')) // Promise.reject('reject');

callLikeSerial

import { callLikeSerial } from '@jelper/promise';

callLikeSerial([
  () => console.log('begin'),
  () => new Promise((r) => {
    setTimeout(() => {
      console.log('Promise');
      r('result');
    }, 1000);
  }),
  (data) => console.log(data),
]).then(() => console.log('end'));

// begin promise result end

buildPromiseHandler

import { buildPromiseHandler } from '@jelper/promise';

const [promise, resolve, reject] = buildPromiseHandler();

promise.then(() => {
  // 执行
})

resolve(); // or reject();

buildCacheAsyncFn

import { buildCacheAsyncFn } from '@jelper/promise';

const getAsyncData = buildCacheAsyncFn(() => {
  console.log('执行 fn')
  return new Promise((r) => {
    setTimeout(() => {
      r('result');
    }, 1000);
  });
});

console.log(getAsyncData());
console.log(getAsyncData());

// 执行 fn
// result
// result

Api

toPromise

处理钩子函数返回值,将不同类型数据转成promise实例,方便执行后续操作

参数说明类型默认值版本
toPromise构建实例(prpos: any) => Promise<any>--

callLikeSerial

链式调用方法

参数说明类型默认值版本
callLikeSerial构建实例(prpos: Array<() => Promise>) => Promise<any>--

buildPromiseHandler

构建 Promise 句柄,将 promise的 resolve reject 暴露出去

参数说明类型默认值版本
callLikeSerial构建实例() => [promise, resolove, reject]--

buildCacheAsyncFn

构建缓存结果的异步函数

参数说明类型默认值版本
buildCacheAsyncFn构建实例<T, R>(porps: ((p: T) => Promise<R>)) => (p: T) => Promise<R>--