Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/387.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何将getDownloadURL设置为变量?_Javascript_Firebase_Firebase Storage - Fatal编程技术网

Javascript 如何将getDownloadURL设置为变量?

Javascript 如何将getDownloadURL设置为变量?,javascript,firebase,firebase-storage,Javascript,Firebase,Firebase Storage,我正在使用angularFireStorage(在我的Ionic应用程序中) 我取得了一些成功,例如,我可以查看我的console.log(res)来单击我的控制台中的链接以查看皮带图像。但是,我无法将其保存到变量,这就是问题所在。最后,我想使用图像标签并使用src链接皮带图像。这是我的密码: const ref = this.storage.ref('belts/'); ref.listAll().subscribe(belt=> belt.items.forEach(ite

我正在使用angularFireStorage(在我的Ionic应用程序中)

我取得了一些成功,例如,我可以查看我的
console.log(res)
来单击我的控制台中的链接以查看皮带图像。但是,我无法将其保存到变量,这就是问题所在。最后,我想使用图像标签并使用
src
链接皮带图像。这是我的密码:

const ref = this.storage.ref('belts/');

ref.listAll().subscribe(belt=> 
    belt.items.forEach(item=> printImage(item))
)

function printImage(imageRef){
    let temp = imageRef.getDownloadURL();
    
    temp.then(res=> {
        console.log(res)
        this.mySRCs.push(res)
    })
}
以及我如何测试它

错误是:

Uncaught (in promise): TypeError: Cannot read property 'mySRCs' of undefined
TypeError: Cannot read property 'mySRCs' of undefined

我觉得我在一两个月前做了类似的事情,但这次我无法在我的应用程序中看到图像。谢谢您的帮助。

我认为您的问题在于在“printImage”函数中使用“this”关键字

您需要执行以下操作之一:

belt.items.forEach(item=>printImage.bind(this,item))

或者假设你有

常数mySRCs=[]

然后将该字段作为参数传递给printImage函数

belt.items.forEach(item=>printImage(item,mySRCs))

而不是在函数中使用“this”,而是使用

function printImage(imageRef, mySRCs){
  let temp = imageRef.getDownloadURL();

  temp.then(res=> {
    console.log(res)
    mySRCs.push(res) //<--- remove this
  })
}
函数printImage(imageRef,mySRCs){
让temp=imageRef.getDownloadURL();
温度然后(res=>{
console.log(res)

mySRCs.push(res)//您可能已将其保存到变量中。您确定这不仅仅是因为获取下载URL是一个无法立即完成的异步操作造成的问题吗?如果您添加一些日志以查看事件的执行顺序,会怎么样?