Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

QuotaExceededError的处理 #16

Closed
wants to merge 3 commits into from
Closed

Conversation

cbbfcd
Copy link
Contributor

@cbbfcd cbbfcd commented Dec 18, 2018

主要分为两种情况:

  1. 比如在开启隐身模式情况下,localStorage的大小被设置为0,这样使用 setItem去存储数据是会报错的,采取的是通过检测该种情况,然后采取用一个缓存对象去代替内存,并重写setItem, getItem等 API 进行hack的方式解决。

  2. 在正常情况下,浏览器是有大概 5 M 的localStorage使用空间(不同浏览器不同),如果存的东西比较多,就存在超出内存空间的情况,这种情况只能通过每一次执行 setItem的时候去判断是不是超出内存限制了,这里使用了兼容的判断方式,不只是通过e.name去判断,如果出现这种错误就给用户一个提示,这里还可以继续完善就是可以让用户传一个回调,在超出内存限制的时候可以去删除一些不重要的数据进而释放空间(当然也可以直接 clear)。

主要分为两种情况:

1. 比如在开启隐身模式情况下,```localStorage```的大小被设置为0,这样使用 ```setItem```去存储数据是会报错的,采取的是通过检测该种情况,然后采取用一个缓存对象去代替内存,并重写```setItem```, ```getItem```等 API 进行hack的方式解决。

2. 在正常情况下,浏览器是有大概 5 M 的```localStorage```使用空间(不同浏览器不同),如果存的东西比较多,就存在超出内存空间的情况,这种情况只能通过每一次执行 ```setItem```的时候去判断是不是超出内存限制了,这里使用了兼容的判断方式,不只是通过```e.name```去判断,如果出现这种错误就给用户一个提示,这里还可以继续完善就是可以让用户传一个回调,在超出内存限制的时候可以去删除一些不重要的数据进而释放空间(当然也可以直接 clear)。
@jaywcjlove
Copy link
Owner

jaywcjlove commented Dec 18, 2018

File % Stmts % Branch % Funcs % Lines Uncovered Line #s
All files 78.81 67.01 79.31 77.98
store.js 78.81 67.01 79.31 77.98 ... 19,123,140,142

代码测试覆盖率下降到 78.81% 有办法添加测试用例吗? @cbbfcd

image

@cbbfcd
Copy link
Contributor Author

cbbfcd commented Dec 18, 2018

好的

@cbbfcd cbbfcd closed this Dec 19, 2018
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants