Options
All
  • Public
  • Public/Protected
  • All
Menu

Class PersistPromise

复用promise

description


默认dropCondition为func 结束; 触发 dropCondition (promise.then)即解除复用,(promise.reject)即无限复用;
example
//example1: 任务执行中时复用结果,执行结束时候重新执行
const action = PersistPromise.create(() => {
    return new Promise<number>((resolve, reject) => {
        setTimeout(() => resolve(Math.random()), 100)
    })
});
Promise.all([action(), action(), action()]).then((results) => {
    let beEqual = results[0] == results[1] && results[1] == results[2];
    console.log("result be equal", beEqual);
})


// example2: task任务为修改a,persistTask保持task仅仅执行一次,复用结果
let a = 0;
let changA_task = () => {
    return new Promise((resolve) => {
        setTimeout(() => {
            a++;
            resolve()
        }, 1000)
    })
}

let persistTask = PersistPromise.create(changA_task, () => Promise.reject());
setInterval(async () => {
    await persistTask();
    console.log("a 一直为1", a);
}, 1000);

Hierarchy

  • PersistPromise

Index

Properties

Methods

Properties

Static Private doingTasks

doingTasks: Map<any, any> = new Map()

Methods

Static create

  • create<T>(func: () => Promise<T>, dropCondition?: () => Promise<any>): (Anonymous function)
  • Type parameters

    • T = any

    Parameters

    • func: () => Promise<T>
        • (): Promise<T>
        • Returns Promise<T>

    • Optional dropCondition: () => Promise<any>
        • (): Promise<any>
        • Returns Promise<any>

    Returns (Anonymous function)

Generated using TypeDoc