当前位置:  开发笔记 > 编程语言 > 正文

等待的承诺创建Array.map返回<pending>

如何解决《等待的承诺创建Array.map返回<pending>》经验,为你挑选了1个好方法。

我正在使用google-cloud-functions在将文件上传到Google云端存储时触发缩略图创建。

exports.generateThumbnail = functions.storage.object().onFinalize(async (object) => {

     // Removed code not relevant to the problem

     // Download file from bucket.
     await file.download({destination: tempLocalFile});

     const uploadPromises = sizes.map(async size => {
        const tempLocalThumbFile = path.join(os.tmpdir(), thumbFilePath);

        // Generate a thumbnail using Sharp.
        await sharp(tempLocalFile).resize(width, height).toFile(tempLocalThumbFile);
        console.log('Thumbnail created at', tempLocalThumbFile);

        return thumbFile.getSignedUrl(config);
  });

    // Get the Signed URLs for the original image.
    const results = await Promise.all([
        uploadPromises,
        file.getSignedUrl(config),
    ]);

    console.log(results[0]);
});

我希望最后一个console.log输出的是大小为4的数组,其中每个元素都包含getSignedurl()函数的回调。相反,我现在每次得到的是大小为4的数组,其中所有元素都是promise。

由于我已经在等待Promise.all(),所以我做错了什么才能导致这个问题?



1> Alberto Trin..:

尝试在中传播 :uploadPromisesPromise.all

const results = await Promise.all([
   ...uploadPromises,
   file.getSignedUrl(config),
]);

问题是uploadPromises已经是一个数组,您将其作为另一个数组的元素传递。通过使用传播语法,可以将uploadPromises数组扩展为其元素。

推荐阅读
mobiledu2402851323
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有