React Native:等待AsyncStorage.getItem无响应

时间:2018-08-11 08:27:19

标签: react-native asynchronous

我有两个按钮,第一个用于设置AsyncStorage的项目,第二个用于获取AsyncStorage的项目。

<Button title = 'click' onPress = {() => {
   let item = '1234'
   AsyncStorage.setItem('data', item )
   alert('saved')
   }
 }
/>
<Button title = 'click2' onPress = { async() => {
   let item = await AsyncStorage.getItem('data')
   alert(item)
   console.log(item)
  }
 }
/>

由于某种原因,在单击第一个按钮以保存数据之后,我尝试单击第二个按钮,但是alert函数和console.log无法正常工作。 有人可以帮我解决吗?谢谢。

2 个答案:

答案 0 :(得分:0)

setItem也是异步的,您不必等待它解决。数据可能没有及时保存(尽管如果您确实在使用面向人的按钮,这似乎不太可能)。

这两个呼叫中的一个或两个都有可能失败,但您没有处理它们的错误-两者均应使用await进行调用,并包装在try / catch中,当然在实际应用。同样,尽管我对此表示怀疑,因为在开发人员中,您通常会看到警告,提示未处理的诺言被拒绝。

答案 1 :(得分:0)

_saveData(data) {
    AsyncStorage.setItem("data", data);
};

_getData = async () => {
    try {
        let data = await AsyncStorage.getItem('data');
        console.log(data)

    } catch (e) {
        //console.log("error", e)
    }
};


<Button title = 'set data' onPress = {() => this._saveData("1234")} />
<Button title = 'get data' onPress = {() => this._getData ()} />