Skip to content

Commit a64a8c1

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

File tree

1 file changed

+156
-0
lines changed

1 file changed

+156
-0
lines changed
Lines changed: 156 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,156 @@
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+
success 返回值:
29+
30+
key 对应的存储内容
31+
32+
##### 代码案例
33+
```javascript
34+
var result = storage.getSync({
35+
key: 'A1'
36+
})
37+
```javascript
38+
```
39+
40+
41+
storage.setSync(OBJECT)
42+
43+
同步方法修改存储内容。同步方法会阻塞JS线程,后续同步JS代码会等待该方法执行完毕后才继续执行。
44+
45+
参数:
46+
47+
| 参数名 | 类型 | 必填 | 说明 |
48+
| -------- | -------- | ---- | ------------------------------------------------------------ |
49+
| key | String || 索引 |
50+
| value | String || 新值。如果新值是长度为 0 的空字符串,会删除以 key 为索引的数据项 |
51+
| success | Function || 成功回调 |
52+
| fail | Function || 失败回调 |
53+
| complete | Function || 执行结束后的回调 |
54+
55+
##### 代码案例:
56+
57+
```javascript
58+
storage.setSync({
59+
key: 'A1',
60+
value: 'V1'
61+
})
62+
```
63+
```
64+
65+
storage.clearSync(OBJECT)
66+
67+
同步方法清空存储内容。同步方法会阻塞js线程,后续同步JS代码会等待该方法执行完毕后才继续执行。
68+
69+
参数:
70+
71+
| 参数名 | 类型 | 必填 | 说明 |
72+
| -------- | -------- | ---- | ---------------- |
73+
| success | Function || 成功回调 |
74+
| fail | Function || 失败回调 |
75+
| complete | Function || 执行结束后的回调 |
76+
77+
##### 代码案例
78+
79+
```javascript
80+
storage.clearSync()
81+
```
82+
```
83+
84+
storage.deleteSync(OBJECT)
85+
86+
同步方法删除存储内容。同步方法会阻塞js线程,后续同步JS代码会等待该方法执行完毕后才继续执行。
87+
88+
参数:
89+
90+
| 参数名 | 类型 | 必填 | 说明 |
91+
| -------- | -------- | ---- | ---------------- |
92+
| key | String || 索引 |
93+
| success | Function || 成功回调 |
94+
| fail | Function || 失败回调 |
95+
| complete | Function || 执行结束后的回调 |
96+
97+
##### 代码案例
98+
99+
```javascript
100+
storage.deleteSync({
101+
key: 'A1'
102+
})
103+
```
104+
```
105+
106+
storage.keySync(OBJECT) `1050+`
107+
108+
同步方法返回存储中某个 index 的键名。同步方法会阻塞js线程,后续同步JS代码会等待该方法执行完毕后才继续执行。
109+
110+
参数:
111+
112+
| 参数名 | 类型 | 必填 | 说明 |
113+
| -------- | -------- | ---- | ---------------------- |
114+
| index | Number || 要查询的键名对应的索引 |
115+
| success | Function || 成功回调 |
116+
| fail | Function || 失败回调 |
117+
| complete | Function || 执行结束后的回调 |
118+
119+
success 返回值:
120+
121+
index 对应的键名
122+
123+
##### 代码案例
124+
125+
```javascript
126+
var result =storage.keySync({
127+
index: 0
128+
})
129+
```
130+
131+
132+
## 【必填】提案人员是否愿意自行实现该功能
133+
134+
*是:提案人员愿意在提案通过后自行实现该功能;
135+
136+
## 详细设计
137+
138+
可选,请向一个熟悉 hapjs内部实现的人讲解如何在 hapjs中实现这个功能,或讲解实现这一功能需要什么步骤。
139+
140+
## 缺陷
141+
142+
我们是不是可以不做这个功能,请考虑:
143+
144+
- 实现这个功能的投入:包括代码的复杂度、代码体积的增加、实现功能投入的人力
145+
- 这个功能是不是不需要 hapjs提供,使用 hapjs的开发者也可以在应用层实现,甚至实现得更好
146+
- 对 hapjs既有惯用开发习惯的影响
147+
- 对已发布版本和现有功能的影响,以及用户进行迁移的成本
148+
- 对其它未有代码实现的 RFC 提案的影响
149+
150+
## 替代选择
151+
152+
还有其他的方案也可以实现这个功能吗?
153+
154+
## 适配策略
155+
156+
如果我们实现了这个提案,有没有什么办法可以帮助开发者更好地适应这个改动?

0 commit comments

Comments
 (0)