我正在使用React Native构建应用程序,但我无法理解JavaScript回调。
在按钮上单击我从用户的相机胶卷(在本例中为2)获取一定数量的图像,然后将它们发送到一个函数,将每个图像参考转换为base64字符串,以便稍后保存在数据库。虽然我希望此函数返回一个base64字符串数组以发送到我的服务器,但我返回的是undefined
值数组。
我正在使用lodash映射从相机胶卷返回给我的每张图像。
点击按钮时调用changeValue
功能,触发相机滚动。
changeValue() {
CameraRoll.getPhotos({first: 2}).then((data) => {
this.photosToBase64(data); // this is returning [undefined, undefined]
// Send array of images to Node server when array values aren't undefined
}
}
photosToBase64(data) {
return _.map(data.edges, (dataNode) => {
const uri = dataNode.node.image.uri;
NativeModules.ReadImageData.readImage(uri, (base64String) => {
/**
* base64String is a string such as:
* '/9j/4AAQSkZ...'
*/
return base64String;
})
})
}
我的目标是this.photosToBase64(data)
将返回一个base64字符串数组(即:['/9j/4AAQSkZ...', '/9j/CDKEJ...']
然后我可以发送到我的节点服务器以存储在数据库中。
处理此问题的最佳方法是什么?在将数据发送到服务器之前,我是否应该在我的changeValue()
函数中等待数组中包含实际值?