我对本机反应非常陌生,可能完全错误。正如反应本机文档所建议的那样,我正在为我的 AsyncStorage 使用包装器。我在做什么:
我有一个名为 Storage 的类,它用作 AsyncStorage 代码的包装器:
'use strict'; var React = require('react-native'); var { AsyncStorage } =React; module.exports={ store(key,value) { AsyncStorage.setItem(key,value); }, get(key) { return AsyncStorage.getItem(key); }, }
另一个类 Auth 使用密钥 auth (已保存)代码查找值:
'use strict'; var React = require('react-native'); var Storage=require('./Storage'); module.exports={ authKeyExists() { console.log("IntelliSpend: In Auth::authKeyExists"); var authKeyPromise=Storage.get('auth'); var keyExists=true; authKeyPromise.then((authKey)=>{ console.log('Authkey:'+authKey); if(authKey){ console.log('Authkey exists'); keyExists= true; } else { console.log('Authkey does not exists'); keyExists= false; } }).done(); return keyExists; } }
理想情况下,密钥“auth”的值存在,因此它应该打印“Authkey exists”并且应该将 keyExists 返回为 true。但它恰恰相反。
在进一步诊断中,我发现函数authKeyExists
在 promise 对象内的代码执行之前就返回了。
我看过几个示例,但它们都在 Screen 组件本身上使用 AsyncStorage(我也尝试过但失败了)。我想通过使用我的存储类来抽象出 AsyncStorage。请让我知道我在哪里弄错了。