作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 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
}
);
});
您可以看到我在您的代码中添加了对 resolve
和 reject
的调用,现在嵌入到 Promise 中的闭包中。
关于javascript - 是否可以将 firebase 的图片上传 "uploadTask.on"监听器变成一个 promise?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48587679/
我有以下正则表达式 /[a-zA-Z0-9_-]/ 当字符串只包含从 a 到z 大小写、数字、_ 和 -。 我的代码有什么问题? 能否请您向我提供一个简短的解释和有关如何修复它的代码示例? //var
我是一名优秀的程序员,十分优秀!