对AsyncStorage的getItem方法进行封装后,在别的组件中调用时得到的值总是[Object object]

RN版本为3.3
如果在图1的then函数中打印输出jsonValue的值,可以看到数据,但在别的组件调用这个方法时,返回的却是Object。我理解的then函数就是等待它前面的方法执行完毕,然后根据前面方法返回的值做操作,我查了半天资料认为就是then没处理好,但具体错在哪又不知
1-先上AsyncStorage代码:
10000000.png

2-在另一个组件中调用:
20000000000000.png

3-返回的结果:
300000.png

阅读 2.5k
2 个回答

AsyncStorage.getItem 是异步方法,所有异步方法返回的都是 Promise 对象。

所有 DeviceStorage.get 返回的是一个 Promise 对象,并不是你期望的 string

正确写法这样的:

DeviceStorage.get('pwd').then(pwd =>{
  console.log(pwd)
})

或者使用 async/await 语法:

const pwd = await DeviceStorage.get('pwd')

把 asyncstorage.getItem 前面的 return 去掉试试。

推荐问题