Skip to content

Commit 6a8070c

Browse files
committed
快应用新增storage同步接口
1 parent 1d4a705 commit 6a8070c

File tree

1 file changed

+134
-0
lines changed

1 file changed

+134
-0
lines changed
Lines changed: 134 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,134 @@
1+
- 提案时间: 2023-05-26
2+
- 影响版本: 1300
3+
- 相关 Issues: 无
4+
5+
## 【必填】概述
6+
7+
数据存储storage增加同步调用能力。
8+
9+
## 【必填】动机
10+
11+
简化开发者在同步场景下开发工作,提供多种接口适应不同场景。
12+
13+
## 【必填】API规格和使用案例
14+
15+
#### 接口定义
16+
17+
storage.getSync(OBJECT)
18+
19+
同步方法,读取存储内容。同步方法会阻塞js线程,注意避免连续多次调用。
20+
21+
参数:
22+
23+
| 参数名 | 类型 | 必填 | 说明 |
24+
| :-----: | :----: | :--: | :----------------------------------------------------------: |
25+
| key | String || 索引 |
26+
| default | String || 如果 key 不存在,返回 default。如果 default 未指定,返回长度为 0 的空字符串 |
27+
28+
返回值:
29+
30+
key 对应的存储内容
31+
32+
##### 代码案例
33+
\```javascript
34+
var result = storage.getSync({
35+
key: 'A1'
36+
})
37+
\```
38+
39+
storage.setSync(OBJECT)
40+
41+
同步方法修改存储内容。同步方法会阻塞JS线程,后续同步JS代码会等待该方法执行完毕后才继续执行。
42+
43+
参数:
44+
45+
| 参数名 | 类型 | 必填 | 说明 |
46+
| -------- | -------- | ---- | ------------------------------------------------------------ |
47+
| key | String || 索引 |
48+
| value | String || 新值。如果新值是长度为 0 的空字符串,会删除以 key 为索引的数据项 |
49+
50+
##### 代码案例:
51+
52+
\```javascript
53+
storage.setSync({
54+
key: 'A1',
55+
value: 'V1'
56+
})
57+
\```
58+
59+
storage.clearSync(OBJECT)
60+
61+
同步方法清空存储内容。同步方法会阻塞js线程,后续同步JS代码会等待该方法执行完毕后才继续执行。
62+
63+
##### 代码案例
64+
65+
\```javascript
66+
storage.clearSync()
67+
\```
68+
69+
storage.deleteSync(OBJECT)
70+
71+
同步方法删除存储内容。同步方法会阻塞js线程,后续同步JS代码会等待该方法执行完毕后才继续执行。
72+
73+
参数:
74+
75+
| 参数名 | 类型 | 必填 | 说明 |
76+
| -------- | -------- | ---- | ---------------- |
77+
| key | String || 索引 |
78+
79+
##### 代码案例
80+
81+
\```javascript
82+
storage.deleteSync({
83+
key: 'A1'
84+
})
85+
\```
86+
87+
storage.keySync(OBJECT) `1050+`
88+
89+
同步方法返回存储中某个 index 的键名。同步方法会阻塞js线程,后续同步JS代码会等待该方法执行完毕后才继续执行。
90+
91+
参数:
92+
93+
| 参数名 | 类型 | 必填 | 说明 |
94+
| -------- | -------- | ---- | ---------------------- |
95+
| index | Number || 要查询的键名对应的索引 |
96+
97+
返回值:
98+
99+
index 对应的键名
100+
101+
##### 代码案例
102+
103+
\```javascript
104+
var result =storage.keySync({
105+
index: 0
106+
})
107+
\```
108+
109+
110+
## 【必填】提案人员是否愿意自行实现该功能
111+
112+
*是:提案人员愿意在提案通过后自行实现该功能;
113+
114+
## 详细设计
115+
116+
可选,请向一个熟悉 hapjs内部实现的人讲解如何在 hapjs中实现这个功能,或讲解实现这一功能需要什么步骤。
117+
118+
## 缺陷
119+
120+
我们是不是可以不做这个功能,请考虑:
121+
122+
- 实现这个功能的投入:包括代码的复杂度、代码体积的增加、实现功能投入的人力
123+
- 这个功能是不是不需要 hapjs提供,使用 hapjs的开发者也可以在应用层实现,甚至实现得更好
124+
- 对 hapjs既有惯用开发习惯的影响
125+
- 对已发布版本和现有功能的影响,以及用户进行迁移的成本
126+
- 对其它未有代码实现的 RFC 提案的影响
127+
128+
## 替代选择
129+
130+
还有其他的方案也可以实现这个功能吗?
131+
132+
## 适配策略
133+
134+
如果我们实现了这个提案,有没有什么办法可以帮助开发者更好地适应这个改动?

0 commit comments

Comments
 (0)