NodeJS rxjs firstValueFrom()从不取消订阅观察值

3z6pesqy  于 2022-12-29  发布在  Node.js
关注(0)|答案(1)|浏览(226)

恭喜,
我正在纠结于firstValueFrom()、lastValueForm(),甚至Observable.pipe(take(1))......
我正在用Angular 14和RxJs 7.8.0编写类型脚本。我的服务器是一个firebase服务器,它通过API提供存储的图像URL,并将getDownloadUrl函数作为观察对象。
我想做的是下载我的网址一次,这样我就可以显示图像。
每当我在我的Observable上尝试这个方法时,它永远不会取消订阅,所以Observable无限地发射值。
我试着用async/await语法和promise语法编写它,但是在第一次发布后仍然不能使它取消订阅。
我实在找不出它不工作的任何理由...有人能帮帮我吗?

returnImage(ref: string){
  return new Promise((resolve,reject)=>{
    firstValueFrom(this.fireStorage.ref(ref).getDownloadURL()).then((url)=>{
      console.log(url);
    },(error)=>{
      reject(error);
    });
  });
}

enter image description here
我想做的是下载我的网址一次,这样我就可以显示图像。
每当我在我的Observable上尝试这个方法时,它永远不会取消订阅,所以Observable无限地发射值。
已经尝试升级rxjs了。我用的是7.5.0,但是升级到了7.8.0。
我尝试使用async/await语法和promise语法编写它

5uzkadbs

5uzkadbs1#

非常感谢你的回答,这对我帮助很大。
1 _ @konrad用他的问题把我放在路上:我忘了取消订阅定期发射datasnapshot的数据库observable。我在DOM上显示来自这个observable的数据,并使用一个函数在正确的时间下载图像。所以我认为我尝试的不同语法是正确的,但它们被每次发射datasnapshot调用了很多次...
2 _ @Shashan Sooriyahetti谢谢你......现在我可以使用Stackblitz,通过重写我的方法并在我创建的整个系统中测试它......我已经能够找到我的错误。
所以我真的很抱歉,非常感谢你们的帮助和React。祝你们有美好的编码时间;)

相关问题