首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >神器承诺返回待定结果

神器承诺返回待定结果
EN

Stack Overflow用户
提问于 2022-02-20 13:53:58
回答 1查看 43关注 0票数 0

这可能是重复的,但我找到的答案中没有一个对我有用。

我仍然是一个初学者,但我知道,当工作的承诺,你需要做一些事情的结果。

在下面的代码中,我创建了一个异步函数,它使用一个base64字符串,宽度和高度作为参数。然后我通过锐利来处理图像。它需要一个缓冲区或图像的任何数组,所以我使用缓冲区构造函数对其进行转换。然后,我需要函数返回一个(调整大小的图像) base64字符串。稍后,我需要使用这个较小的base64字符串将其提供给另一个函数。

代码语言:javascript
复制
    const resizer = async (base64, width, height) => {
  if (!base64) {
    throw console.error("not a base64 string")
  } else {
    const Buffer = require("buffer").Buffer
    let base64buffer = Buffer.from(base64, "base64")
    const image = sharp(base64buffer).resize({
      width: width,
      height: height,
      fit: sharp.fit.cover,
    })
    return (await image.toBuffer()).toString("base64")
  }
}

const resizedImage = resizer(base64Image, 224, 224).then((result) => {
  return result
})
console.log(resizedImage)

但是,当我运行这段代码时,它会告诉我承诺是挂起的,这表明我没有对结果做任何事情。当我将“返回结果”更改为console.log时,它实际上会打印我需要的内容,但它仍然会向我抛出“待定的承诺”。

我不知道我哪里出了问题

任何帮助或指示都很受欢迎!:)

EN

回答 1

Stack Overflow用户

发布于 2022-02-20 14:08:41

这一行:

代码语言:javascript
复制
resizer(base64Image, 224, 224).then((result) => {
  return result
})

这仍然是一个承诺。因此,您需要await,比如:

代码语言:javascript
复制
const resizedImage = await resizer(base64Image, 224, 224);
console.log(resizedImage)

新的更新,从业主。

重油器返回一个承诺。因此,您不能在全局上下文中console.log结果。解决方案是将console.log移到函数中。像这样:

代码语言:javascript
复制
resizer(base64Image, 224, 224).then((result) => {
  console.log(result);
  return result
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71195092

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档