JavaScript回调返回未定义

时间:2016-05-17 23:33:14

标签: javascript asynchronous callback asynccallback

我正在使用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()函数中等待数组中包含实际值?

0 个答案:

没有答案