关于uniapp forEach()获取图片url 并赋值 无法获取的问题

717 阅读1分钟

初步判断应该是使用 循环的时候调用uniCloud.getTempFileURL Api时产生的异步情况导致赋值时无法获取 fildID 是图片的云路径,通过uniCloud.getTempFileURL 获取图片的网络路径

this.getNumber = require("../../ApiFun/getNumber.js") //引入封装文件
this.listPic = await this.getNumber.getNumber.getPicUrl(fildID).then((result) => {
        return result
})
console.log(this.listPic[0]) //undefined

export class getNumber {
    static getPicUrl(fildID) {
        return new Promise((resolve, reject) => {
                let cloudUrl = []
                console.log(fildID)
                fildID.forEach( (item, index) => {
                     uniCloud.getTempFileURL({
                                fileList: [item]
                            })
                            .then(resulte => {
                                cloudUrl.push(resulte.fileList[0].tempFileURL)
                            });
                    resolve(cloudUrl)
            })
        };
}

解决: 可以是使用async await 解决 forEach 中加入async , uniCloud 前面加await

this.getNumber = require("../../ApiFun/getNumber.js") //引入封装文件
this.listPic = await this.getNumber.getNumber.getPicUrl(fildID).then((result) => {
        return result
})
console.log(this.listPic[0]) //图片的网络路径

export class getNumber {
    static getPicUrl(fildID) {
        return new Promise((resolve, reject) => {
                let cloudUrl = []
                console.log(fildID)
                fildID.forEach(async (item, index) => {
                    await uniCloud.getTempFileURL({
                                fileList: [item]
                            })
                            .then(resulte => {
                                cloudUrl.push(resulte.fileList[0].tempFileURL)
                            });
                    resolve(cloudUrl)
            })
        };
}