sunnylqm / react-native-storage

local storage wrapper for both react-native and browser. Support size controlling, auto expiring, remote data auto syncing and getting batch data in one query.
MIT License
3.02k stars 268 forks source link

react-native 0.6版本 syncInBackground这个属性设置为false时 获取storage的时候还是不等待新的storage请求完成啊 #238

Closed wuzh1993 closed 4 years ago

wuzh1993 commented 4 years ago

sync: { // sync方法的名字必须和所存数据的key完全相同 // 方法接受的参数为一整个object,所有参数从object中解构取出 // 这里可以使用promise。或是使用普通回调函数,但需要调用resolve或reject。 Token(params) { storage.getBatchData([ { key: 'userAccount' }, { key: 'userPassword' }, ]) .then(results => { api.login(results[0], results[1], 'login').then(res => { if (res.data.Result) { storage.save({ key: 'Token', data: res.data.KeyValue, expires: 1000 * 20 }); console.log('storage' + res.data.KeyValue) return res.data.KeyValue; } }) }) }

获取缓存的代码

let theToken = await storage.load({ key: 'Token', autoSync: true, syncInBackground: false, }); console.log('request' + theToken) 这里返回的是undefind 并没有等待新数据请求完成返回

谢谢作者大牛解惑。

sunnylqm commented 4 years ago

token方法里没有看到有返回啊?

sunnylqm commented 4 years ago

每一个promise 及其后续链都请明确写出return,否则都是return undefine

wuzh1993 commented 4 years ago

每一个promise 及其后续链都请明确写出return,否则都是return undefine

大佬 您可以说的详细一些吗? 我用的async await来处理的异步 我该在哪里return呢 谢谢

wuzh1993 commented 4 years ago

每一个promise 及其后续链都请明确写出return,否则都是return undefine

大佬 您可以说的详细一些吗? 我用的async await来处理的异步 我该在哪里return呢 谢谢

我在获取token的结果里有return return res.data.KeyValue; 不晓得是哪里的问题

sunnylqm commented 4 years ago

image

wuzh1993 commented 4 years ago

每一个promise 及其后续链都请明确写出return,否则都是return undefine

谢谢大佬的解惑 完美解决问题 谢谢

wuzh1993 commented 4 years ago

token方法里没有看到有返回啊?

谢谢大佬的解惑 完美解决问题 谢谢