gpt4 book ai didi

javascript - 是否可以将 firebase 的图片上传 "uploadTask.on"监听器变成一个 promise?

转载 作者:行者123 更新时间:2023-11-29 18:57:41 27 4
gpt4 key购买 nike

我正在使用 firebase 并注意到大多数方法都返回 promise ,但在文档中这个不是。是否可以将其更改为 promise ?

uploadTask.on(
'state_changed',
function(snapshot) {
const progress = snapshot.bytesTransferred / snapshot.totalBytes * 100;
console.log('Upload is ' + progress + '% done');
},
function(error) {
alert(error);
},
function() {
const downloadURL = uploadTask.snapshot.downloadURL;
console.log(downloadURL);
}
);

最佳答案

如果您希望在上传完成后得到一些 promise ,请使用这种通用模式:

const promise = new Promise((resolve, reject) => {
// whenever the work is complete and successful
resolve()
// or, whenever the work finishes with an error
reject()
})

According to the API docs ,对于 Cloud Storage for Firebase UploadTask,您的 on 处理程序将收到“完成”的回调,作为您的第四个参数。所以你可以这样修改它:

const promise = new Promise((resolve, reject) => {
uploadTask.on(
'state_changed',
function(snapshot) {
const progress = snapshot.bytesTransferred / snapshot.totalBytes * 100;
console.log('Upload is ' + progress + '% done');
},
function(error) {
reject(error); // added this line
alert(error);
},
function() {
const downloadURL = uploadTask.snapshot.downloadURL;
console.log(downloadURL);
resolve(); // added this line
}
);
});

您可以看到我在您的代码中添加了对 resolvereject 的调用,现在嵌入到 Promise 中的闭包中。

关于javascript - 是否可以将 firebase 的图片上传 "uploadTask.on"监听器变成一个 promise?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48587679/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com