Javascript JS Promise-返回一些结果而不解析承诺
我正在制作一个功能,用Firebase存储上传视频。 我想了解上传过程的进度状态,并对这个过程的成功或失败做出承诺 代码如下: video.service.js video.component.js 我想在video.component.js文件中触发某种事件来检测进度变化。但是,我仍然希望我的承诺在文件成功解决后实现 有什么建议吗Javascript JS Promise-返回一些结果而不解析承诺,javascript,promise,Javascript,Promise,我正在制作一个功能,用Firebase存储上传视频。 我想了解上传过程的进度状态,并对这个过程的成功或失败做出承诺 代码如下: video.service.js video.component.js 我想在video.component.js文件中触发某种事件来检测进度变化。但是,我仍然希望我的承诺在文件成功解决后实现 有什么建议吗 谢谢,我将使用一个好的旧回调来附加 函数上传视频(attachProgressEvent){ 返回新承诺((解决、拒绝)=>{ 设i=0; from(新数组(10
谢谢,我将使用一个好的旧回调来附加
函数上传视频(attachProgressEvent){
返回新承诺((解决、拒绝)=>{
设i=0;
from(新数组(10)).forEach((x,xi)=>{
设置超时(()=>{
if(attachProgressEvent的类型=='function'){
附件(一,10);
}
i+=1;
如果(i==10){
解决();
}
},席* 100);
});
});
}
上传视频((i,tot)=>{
log(`Progress of${i}/${tot}`);
})
.然后(()=>{
console.log(“全部完成”);
});代码>来自firebase文档:
实现目标的一种方法是将回调作为参数发送到uploadVideo
,并在每次UploadTask
告诉我们上传进度的更新时使用它:
function uploadVideo(generatedFileName, file, progressCallback) {
return new Promise((resolve, reject) => {
firebaseStorageReference
.child("videos/" + generatedFileName)
.put(file)
.on(
firebase.storage.TaskEvent.STATE_CHANGED,
'next': snapshot => {
const percent = snapshot.bytesTransferred / snapshot.totalBytes * 100;
progressCallback(percent);
},
'error': error=> reject(error),
'complete': complete => resolve(complete)
);
});
}
此代码未经测试!我只是更改了他们的示例,以满足您的需要。您可以使用回调函数来解决此问题,该函数可以使用状态更改信息进行调用。
function uploadVideo() {
videoService
.uploadVideo()
.then(video => success(video))
.catch(error => error());
};
function uploadVideo(generatedFileName, file, progressCallback) {
return new Promise((resolve, reject) => {
firebaseStorageReference
.child("videos/" + generatedFileName)
.put(file)
.on(
firebase.storage.TaskEvent.STATE_CHANGED,
'next': snapshot => {
const percent = snapshot.bytesTransferred / snapshot.totalBytes * 100;
progressCallback(percent);
},
'error': error=> reject(error),
'complete': complete => resolve(complete)
);
});
}