Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/423.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在运行';这叫什么_Javascript_Reactjs_React Native_Expo - Fatal编程技术网

Javascript 在运行';这叫什么

Javascript 在运行';这叫什么,javascript,reactjs,react-native,expo,Javascript,Reactjs,React Native,Expo,我有3个功能。一个拍照,一个压缩图像,一个上传图像 按下按钮拍照(此功能正常) 另一个按钮被按下上传图片,但首先它运行压缩图像,然后上传它,但我遇到了ReadableNativeMap无法转换为java.lang.String的错误,这对我帮助很大。我传递的值是否正确 //Take picture const takePicture = async () => { if (cameraRef.current) { const options = { quality:

我有3个功能。一个拍照,一个压缩图像,一个上传图像

按下按钮拍照(此功能正常) 另一个按钮被按下上传图片,但首先它运行压缩图像,然后上传它,但我遇到了
ReadableNativeMap无法转换为java.lang.String的错误,这对我帮助很大。我传递的值是否正确

//Take picture
  const takePicture = async () => {
    if (cameraRef.current) {
      const options = { quality: 1, base64: true, skipProcessing: true };
      const result = await cameraRef.current.takePictureAsync(options);
      setImageResult(result.uri);
    }
  };

  //compression image
  const compressimagestuff = async (uncompressedImage) => {
    const manipResult = ImageManipulator.manipulateAsync(
        uncompressedImage,
        { compress: 0.3, format: ImageManipulator.SaveFormat.JPEG }
      );
    return manipResult.url;
  };


  // uploading it to firebase
  const uploadImageAsync = async (uncompressedImage) => {
    let compressedImageUrl = compressimagestuff(uncompressedImage);
    const blob = await new Promise((resolve, reject) => {
        const xhr = new XMLHttpRequest();
        xhr.onload = function () {
          resolve(xhr.response);
        };
        xhr.onerror = function (e) {
          console.log(e);
          reject(new TypeError('Network request failed'));
        };
        xhr.responseType = 'blob';
      xhr.open('GET', compressedImageUrl, true);
      xhr.send(null);
        
    });

    const ref = firebase
      .storage()
      // the file that it will get saved to
      .ref('Front/')
      // giving it a unique name
      .child(await uuid.v4())
    const snapshot = await ref.put(blob);
    blob.close();
    return await snapshot.ref.getDownloadURL();
  };
  
按钮,用于上传拍摄的照片

  const uploadPreviewButton = () => (
    <TouchableOpacity disabled={wasPressed} onPress={() => { uploadImageAsync(imageResult); setWasPressed(true); }} style={[styles.uploadButton, wasPressed ? { backgroundColor: 'red'} : {} ]}>
        <Icon ...>
    </TouchableOpacity>
  );
const uploadPreviewButton=()=>(
{uploadImageAsync(imageResult);setWasPressed(true);}}style={[style.uploadButton,wasPressed?{backgroundColor:'red'}:{}]}>
);

compressimagestuff
是一个异步函数,但您不必等待它。更改此项:

const uploadImageAsync = async (uncompressedImage) => {
    let compressedImageUrl = compressimagestuff(uncompressedImage);
致:

const uploadImageAsync = async (uncompressedImage) => {
    let compressedImageUrl = await compressimagestuff(uncompressedImage);
                          // ^