Javascript JS Promise-返回一些结果而不解析承诺

Javascript JS Promise-返回一些结果而不解析承诺,javascript,promise,Javascript,Promise,我正在制作一个功能,用Firebase存储上传视频。 我想了解上传过程的进度状态,并对这个过程的成功或失败做出承诺 代码如下: video.service.js video.component.js 我想在video.component.js文件中触发某种事件来检测进度变化。但是,我仍然希望我的承诺在文件成功解决后实现 有什么建议吗 谢谢,我将使用一个好的旧回调来附加 函数上传视频(attachProgressEvent){ 返回新承诺((解决、拒绝)=>{ 设i=0; from(新数组(10

我正在制作一个功能,用Firebase存储上传视频。 我想了解上传过程的进度状态,并对这个过程的成功或失败做出承诺

代码如下:

video.service.js video.component.js 我想在video.component.js文件中触发某种事件来检测进度变化。但是,我仍然希望我的承诺在文件成功解决后实现

有什么建议吗


谢谢,

我将使用一个好的旧回调来附加

函数上传视频(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)
          );
      });
    }