这个错误已经犯了无数次了,而且总是会忽略,所以总结一下!
【务必切记】无法再异步的方法中直接添加任何同步的全部变量,因为同一个线程!!!
【异步总结】:异步只能在当前作用域中读或写数据【如果要传入外部也只能返回一个Promise对象】
如果玩过Python的Flask,就应该非常有体会,不管是请求线程,还是APP的线程,都必须在同一线程中才能访问对应的变量,如果出现了多线程的时候,你是无法拿到其他线程的对象!
JavaScript中的asysc也是一个道理,一定要切记,只要是异步就实时获取,千万别去保存变量
同步和异步存取数据案例演示:
let nameStorage = "同步初始化值";
Vue.prototype.$uniSetStorage("name", "异步存储值");
// 异步和同步是两个完全不一样的线程,所以他们的值是无法传递的!
async function test () {
nameStorage = await Vue.prototype.$uniGetStorage("name");
console.log("异步当前环境:", nameStorage); //输出结果【异步当前环境: 异步存储值】
}
test();
console.log("同步环境", nameStorage); // 输出结果:【同步环境 同步初始化值】