Реагировать на собственный возможный необработанный отказ от обещания (id: 0): - PullRequest
0 голосов
/ 18 декабря 2018

Я пытаюсь сохранить изображение с экспо-камеры.После этого я отправлю эту картинку в облачную.Поэтому мне нужны свойства base64.Но у меня есть проблема.

takePictureAndCreateAlbum = async () => {
    const { uri } = await this.camera.takePictureAsync({
      base64: true
    }).then(data => {
      return (
        this.setState({
          data
        }),
        console.log("data", data)
      )
    }).catch(err => {
      throw error;}
      )
      const asset = await MediaLibrary.createAssetAsync(uri);
      MediaLibrary.createAlbumAsync('Expo', asset)
        .then(() => {
          Alert.alert('Album created!')
        })
        .catch(error => {
          Alert.alert('An Error Occurred!')
        });

        this.sendCloudinary(this.state.data)
  };

Когда я пытался сохранить изображение, я получал следующие ошибки:

Возможный необработанный отказ от обещания (id: 0):

TypeError: Невозможно прочитать свойство 'uri' из неопределенного

Я проверил другой вопрос и ответы.Но я не нашел решения.Как я могу это исправить?

1 Ответ

0 голосов
/ 18 декабря 2018

Вы, вероятно, хотите что-то более похожее на это.

  takePictureAndCreateAlbum = async () => {
    const { uri } = await this.camera
      .takePictureAsync({
        base64: true
      })
      .then(data => {
        this.setState({
          data
        }),
          console.log("data", data);
        return data;
      })
      .catch(err => {
        throw error;
      });
    const asset = await MediaLibrary.createAssetAsync(uri);
    MediaLibrary.createAlbumAsync("Expo", asset)
      .then(() => {
        Alert.alert("Album created!");
      })
      .catch(error => {
        Alert.alert("An Error Occurred!");
      });

    this.sendCloudinary(this.state.data);
  };

В приведенном выше примере вы возвращаете комбинацию this.setState и консольного журнала, когда вы должны возвращать данные, когдапервоначальное обещание takePictureAsync выполнено.

...