原文链接:https://github.com/Microsoft/napajs/blob/master/docs/api/store.md
Namespace store
Table of Contents
- Introduction
- API
- create(id: string): Store
- get(id: string): Store
- getOrCreate(id: string): Store
- count: number
- Interface Store
- store.id: string
- store.set(key: string, value: any): void
- store.get(key: string): any
- store.has(key: string): boolean
- store.size: number
介绍
在通过参数传递数据方面,存储API是对跨JavaScript线程共享可传递数据的必要补充。使用store.set时,数据被封装成JSON并存储在进程堆栈里,因此所有的线程都可以访问这些数据,当用户通过store.get获得这些数据时,它们就被解封了。
尽管非常方便,但是不推荐使用store来传递带有事务或请求的值,因为这种方式比单纯传递对象数据要耗费资源(比如会有锁等)。此外,虽然有垃圾回收机制,但还是希望开发者能够在使用完后删除key。
API
调用下面的APIs来创建、获得和操作store。
create(id: string): Store
通过传入一个标识字符串来创建store,之后可用该字符串来get这个store。当所有JavaScript虚拟机中的所有指向该store的引用都清除了,这个store将被销毁。因此在使用store时,保留一个全局或者模块内的引用是一个非常好的选择。如果这个id已被占用则会抛错。
例如:
var store = napa.store.create(‘store1’);
get(id: string): Store
该方法根据传入的字符串标识可以得到store的引用。如果该id不存在,则返回undefined。
例如:
var store = napa.store.get(‘store1’);
getOrCreate(id: string): Store
该方法根据传入的字符串标识可以得到store的引用,如果该id不存在,则创建一个。当在每个zone的worker里执行代码创建store时非常便捷,因为它不会破坏对称性。
例如:
var store = napa.store.getOrCreate(‘store1’);
count: number
它返回活跃的store的数量。
Store接口
通过这些接口,用户可以跨多个JavaScript虚拟机put和get数据。
store.id: string
获得该store的id
store.set(key: string, value: any): void
该方法向store中存入一个可传递的值,并传入一个该值的引用。如果这个引用已经存在,新值会覆盖旧值。
例如:
store.set(‘status’, 1);
store.get(key: string): any
该方法通过id获得可传递的值。如果id不存在,返回undefined。
例如:
var value = store.get(‘status’);
assert(value === 1);
store.has(key: string): boolean
该方法区分当前store里是否存在该id。
例如:
assert(store.has(‘status’))
store.size: number
该方法统计当前store中key的数量。