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