最近在做自动登录时访问数据的封装,其中涉及到了跟资产相关的房间信息,封装操作在登录时加载,应用到了H5在浏览器中的localStorage,不了解的话可以先行百度一下。
此时遇到一个问题,例如资产房间进行了增删改,对应的缓存也是要进行同步刷新的,不然其他地方获取的仍然是之前的数据。
最开始考虑到的是在执行增删改的接口返回success时调用对应的缓存刷新封装方法。
图中红色圈起来的部分,则是执行刷新方法,但是测验发现,当前insert成功了,但是上面三个方法却没有完全执行。注释掉reload后则会完全执行。
于是考虑到是什么影响到了方法的调用,那就是异步的问题,方法在调用时,默认的async未写,则是默认的true异步加载。
同时会继续向下调用其余方法,与此同时,reload方法将未执行完毕的三个方法直接刷新掩盖了。等若于直接return中止其余方法。
为了顺利刷新,在上述方法内部加上async:false 使得方法变成同步执行。(如果有更好的方法,希望可以指出留言)
ajax的目的本就是异步加载,此时却加上了同步的限制,让其失去了部分意义,但是为了数据的完整加载,目前只想到了这个办法。另外提醒一句,同步加载是将网页卡住的操作,一个个等待加载,如果同步的方法涉及太多,则页面加载效果看起来就很差,希望大家能注意。