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 🙏

© 2024 – Pkg Stats / Ryan Hefner

@ailhc/obj-pool

v3.0.8

Published

General purpose object pool module, provides a concise and complete interface for managing object pools for object generation and collection, as well as object pool manager.

Downloads

57

Readme

@ailhc/obj-pool

简介

这是一个通用的对象池管理模块,可以使用对象池管理器对全局多个对象池进行管理,也可以使用单个对象池。对象池管理的对象可以不实现对应的接口,而通过向对象池实例注册通用的对象获取和回收处理函数

特性

  1. 全局管理多个对象池
  2. 对象无需实现对象池对象接口也可进行获取和回收处理
  3. 简洁可扩展的API
  4. 智能类型提示

安装

  1. 通过npm安装

     npm i @ailhc/layer   
  2. 本地link npm包

    a. clone 项目仓库

     git clone https://github.com/AILHC/EasyGameFrameworkOpen
        

    b. 在packages/layer文件夹下

     npm link

    c. 在项目游戏项目目录下

     npm link @ailhc/layer    
  3. 使用源码 a. clone 项目仓库

     git clone https://github.com/AILHC/EasyGameFrameworkOpen

    b. 直接复制packages/layer/src下的ts源码到项目文件夹下使用(排除index.ts)

使用

  1. 基础使用
//使用全局管理器
const mgr = new ObjPoolMgr();
//实现对象池接口
class ClassA implements objPool.IObj{
    onGet(){

    }
    onReturn(){

    }
    onKill(){

    }
}
mgr.createObjPool({sign:"test1",clas:ClassA});
const ins1 = mgr.get("test1");

//注入通用对象处理函数
//这样对于没有实现IObj接口的对象也可以
const objPool = new BaseObjPool();

objPool.init(
    {
        sign: "pool1",
        objHandler: {
            onGet(obj: objPool.IObj, onGetData: any) {

            },
            onCreate(obj): void {

            },
            onReturn(obj): void {

            },
            onKill(obj): void {

            }

        }
    }
)
  1. 提示更加智能
interface ITestObjGetDataMap {
    TestObj1: { num: number },
    TestObj2: { name: string },
    TestObj3: { name: string }
}
const poolMgr = new ObjPoolMgr<ITestObjGetDataMap>();
poolMgr.createByClass("TestObj1", TestObj1);
poolMgr.createByFunc("TestObj2", () => {
    return new TestObj2();
});
poolMgr.preCreate("TestObj1", 5);
//get 这里get可以获得对应"TestObj1"的传参类型提示
const testObj1: TestObj1 = poolMgr.get("TestObj1", { num: 2 });

//批量获取
const testObj2s: TestObj2[] = poolMgr.getMore("TestObj2", { name: "testObj2" }, 4);
  1. 阈值控制
const objPool = new BaseObjPool();

objPool.init(
    {
        sign: "pool1",
        objHandler: {
            onGet(obj: objPool.IObj, onGetData: any) {

            },
            onCreate(obj): void {

            },
            onReturn(obj): void {

            },
            onKill(obj): void {

            }

        },
        //阈值
        threshold: 100
    }
)
//回收对象,如果对象池里的数量大于等于100,则这个obj就会被kill掉(销毁);
objPool.return(obj);

CHANGELOG