[英]How to make a function return a promise
I want to return downloadURL
when this function is called, it's a firebase upload function. 我想在调用此函数时返回
downloadURL
,它是一个firebase上传函数。
import { storage } from "./base"; import firebase from "firebase"; function uploadFile(file, metadata) { return new Promise((resolve, reject) => { const task = storage.child(`/${file.name}`).put(file, metadata); task.on( firebase.storage.TaskEvent.STATE_CHANGED, function(snapshot) { var progress = (snapshot.bytesTransferred / snapshot.totalBytes) * 100; console.log(progress); }, function(error) { switch (error.code) { case "storage/unauthorized": break; case "storage/canceled": break; case "storage/unknown": break; default: break; } reject(error); }, function() { task.snapshot.ref.getDownloadURL().then(function(downloadURL) { resolve(downloadURL); console.log(downloadURL); }); }, ); }); } export { uploadFile };
I tried this, it doesn't return the downloadURL
我试过了,它没有返回
downloadURL
you can simply try it as follows: 您可以简单地尝试如下操作:
Use then
method in promises to get the resolved downloadUrl
在promise中使用
then
方法来获取已解决的downloadUrl
uploddFile(file, data).then(downloadUrl => console.log(downloadUrl) );
Try this. 尝试这个。
import { storage } from "./base";
import firebase from "firebase";
function uploadFile(file, metadata) {
return new Promise((resolve, reject) => {
const task = storage.child(`/${file.name}`).put(file, metadata);
task.on(
firebase.storage.TaskEvent.STATE_CHANGED,
function(snapshot) {
var progress = (snapshot.bytesTransferred / snapshot.totalBytes) * 100;
console.log(progress);
},
function(error) {
switch (error.code) {
case "storage/unauthorized":
break;
case "storage/canceled":
break;
case "storage/unknown":
break;
default:
break;
}
reject(error);
},
task.snapshot.ref.getDownloadURL().then(function(downloadURL) {
resolve(downloadURL);
console.log(downloadURL);
});
,
);
});
}
Idea is to include resolve method once the getDownloadURL is succeeded. 想法是,一旦成功完成getDownloadURL,便包括resolve方法。 Then this can be retrieved by calling as mentioned in the above answer
然后可以通过调用上面的答案中提到的来检索
uploadFile(file, metaData)
.then((download) => console.log(downloadURL)) ; // Or whatever you want to do wth downloadURL
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.