[英]Javascript return variable from function and pass as parameter
我有此功能將圖像插入Firebase。 我想做的是選擇圖像,將圖像插入Firebase存儲中,獲取其downloadURL,然后為帳戶插入新記錄以及downloadURL。
uploadAsByteArray = async (pickerResultAsByteArray, progressCallback) => {
try {
var metadata = {
contentType: 'image/jpeg',
};
let name = new Date().getTime() + "-media.jpg"
var storageRef = firebase.storage().ref();
var ref = storageRef.child('assets/' + name)
let uploadTask = ref.put(pickerResultAsByteArray, metadata)
uploadTask.on('state_changed', function (snapshot) {
progressCallback && progressCallback(snapshot.bytesTransferred / snapshot.totalBytes)
var progress = (snapshot.bytesTransferred / snapshot.totalBytes) * 100;
console.log('Upload is ' + progress + '% done');
}, function (error) {
console.log("in _uploadAsByteArray ", error)
}, function () {
var downloadURL = uploadTask.snapshot.downloadURL;
//console.log("_uploadAsByteArray ", uploadTask.snapshot.downloadURL)
console.log('URLLLLL ' + downloadURL);
// save a reference to the image for listing purposes
var ref = firebase.database().ref('assets');
ref.push({
'URL': downloadURL,
//'thumb': _imageData['thumb'],
'name': name,
//'coords': _imageData['coords'],
'owner': firebase.auth().currentUser && firebase.auth().currentUser.uid,
'when': new Date().getTime()
})
});
return downloadURL;
} catch (ee) {
console.log("when trying to load _uploadAsByteArray ", ee)
}
}
我想從此函數返回變量downloadURL,並將其作為參數傳遞給我的addNewAccount(),但是我不確定。
addNewAccount = (downloadURL) => {
console.log(downloadURL);
}
您需要使用回調,就像對progressCallback
並在其中傳遞您的downloadURL
:
然后,您將在這里進行downloadURL
URL:
api.uploadAsByteArray(byteArray, (downloadURL) => {
//console.log('downloadURL' + downloadURL)
this.setState({ downloadURL: downloadURL})
})
在setState
之后,您將在組件狀態下具有一個downloadURL,並可以在addNewAccount
傳遞它:
<TouchableOpacity onPress={()=> this.addNewAccount(downloadURL)}>
您的函數uploadAsByteArray:
uploadAsByteArray = async(pickerResultAsByteArray, progressCallback) => {
try {
var metadata = {
contentType: 'image/jpeg',
};
let name = new Date().getTime() + "-media.jpg"
var storageRef = firebase.storage().ref();
var ref = storageRef.child('assets/' + name)
let uploadTask = ref.put(pickerResultAsByteArray, metadata)
uploadTask.on('state_changed', function(snapshot) {
progressCallback && progressCallback(snapshot.bytesTransferred / snapshot.totalBytes)
var progress = (snapshot.bytesTransferred / snapshot.totalBytes) * 100;
console.log('Upload is ' + progress + '% done');
}, function(error) {
console.log("in _uploadAsByteArray ", error)
}, function() {
var downloadURL = uploadTask.snapshot.downloadURL;
//console.log("_uploadAsByteArray ", uploadTask.snapshot.downloadURL)
console.log('URLLLLL ' + downloadURL);
// save a reference to the image for listing purposes
var ref = firebase.database().ref('assets');
ref.push({
'URL': downloadURL,
//'thumb': _imageData['thumb'],
'name': name,
//'coords': _imageData['coords'],
'owner': firebase.auth().currentUser && firebase.auth().currentUser.uid,
'when': new Date().getTime()
})
progressCallback(downloadURL);
});
} catch (ee) {
console.log("when trying to load _uploadAsByteArray ", ee)
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.