Javascript 在运行';这叫什么
我有3个功能。一个拍照,一个压缩图像,一个上传图像 按下按钮拍照(此功能正常) 另一个按钮被按下上传图片,但首先它运行压缩图像,然后上传它,但我遇到了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:
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);
// ^