微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为什么 res.end() 不能在 Node.js 的异步函数中获取值?

如何解决为什么 res.end() 不能在 Node.js 的异步函数中获取值?

我正在开发我的第一个使用 Node.js 的项目,所以如果这里的某些内容听起来错误、愚蠢或很容易解释,请原谅我!老实说,我还没有真正征服异步编程的本质,这在 Node.js 中显然很常见......

今天,我正在使用 sharp 模块处理图像。最终的结果应该是经过Base64编码的图片。从技术上讲,这部分已经完成。我已经做到了这一点。我真正在苦苦挣扎的是 UPDATE `posts` SET `comments` = JSON_SET(`comments`,'$."*".content','Lorem ipsum ...') 函数。我使用它来将结果返回到前端,当然,结束请求本身。第二部分确实有效。但是……无论我发送什么值,前端总是收到一个空数组。

res.end()

sharp(request.files.photo.data).jpeg({ mozjpeg: true }).toBuffer().then(data=> { result = `data:image/jpeg;base64,${data.toString('base64')}`; res.end(JSON.stringify(result)); }).catch(err => { console.log(err); process = "FILE_ERROR" res.end(JSON.stringify(process)); }); 函数似乎是异步的。正如我所说,我还没有理解它们,也没有达到它们看起来不那么可怕的地步。按照模块的文档,我发现我可以使用 toBuffer() 语句等待函数完成。我认为它确实为函数提供了将图像转换为缓冲区数据然后让程序对其进行编码所需的时间。所有这些都跟在 then() 函数之后。我已经说过 - 它确实结束了请求,但它永远不会有任何价值。它只给前端一个空数组。这不是很多信息。同样的事情发生在 res.end() 函数内部。这可能是什么原因?究竟需要做些什么才能解决这个问题?任何形式的帮助和建议都将受到欢迎和赞赏!

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。