这可能是重复的,但我找到的答案中没有一个对我有用。
我仍然是一个初学者,但我知道,当工作的承诺,你需要做一些事情的结果。
在下面的代码中,我创建了一个异步函数,它使用一个base64字符串,宽度和高度作为参数。然后我通过锐利来处理图像。它需要一个缓冲区或图像的任何数组,所以我使用缓冲区构造函数对其进行转换。然后,我需要函数返回一个(调整大小的图像) base64字符串。稍后,我需要使用这个较小的base64字符串将其提供给另一个函数。
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时,它实际上会打印我需要的内容,但它仍然会向我抛出“待定的承诺”。
我不知道我哪里出了问题
任何帮助或指示都很受欢迎!:)
发布于 2022-02-20 14:08:41
这一行:
resizer(base64Image, 224, 224).then((result) => {
return result
})这仍然是一个承诺。因此,您需要await,比如:
const resizedImage = await resizer(base64Image, 224, 224);
console.log(resizedImage)新的更新,从业主。
重油器返回一个承诺。因此,您不能在全局上下文中console.log结果。解决方案是将console.log移到函数中。像这样:
resizer(base64Image, 224, 224).then((result) => {
console.log(result);
return result
});https://stackoverflow.com/questions/71195092
复制相似问题