javascript - 当我发送 res.send(body)
问题描述
app.post('/getDetails', async function (req, res) {
var body
var post_req = await https.request(post_options, function (res) {
res.setEncoding('utf8');
body = '';
res.on('data', function (chunk) {
body += chunk;
console.log(body);
console.log(JSON.parse(body));
newBody = body;
}).on('error', function (error) {
console.log(error)
});
});
post_req.write(requestBody);
post_req.end();
res.send(body);
});
res.send(body) 正在发送未定义我在 res.send(body) 之前放置了一个 console.log(body) 它显示未定义,并且在变量 post_req 中,body 具有价值
解决方案
正如我在评论中提到的,您正在尝试将 Async-Await 与回调一起使用。您不能将 Async-Await 语法与回调一起使用。将 Async/Await 与 Promise 一起使用。
您必须为回调编写承诺包装器,或者您可以使用 request-promise 模块返回承诺。
承诺包装:
app.post('/getDetails', async function (req, res) {
var body
function httpReq(post_options){
return new Promise(function(resolve, reject){
https.request(post_options, function (res) {
res.setEncoding('utf8');
body = '';
res.on('data', function (chunk) {
body += chunk;
console.log(body);
console.log(JSON.parse(body));
newBody = body;
resolve();
}).on('error', function (error) {
console.log(error)
reject()
});
});
})
}
var post_req = await httpReq(post_options)
...
...
res.send(body);
});
推荐阅读
- android - 将图像和参数从 android(retrofit) 上传到 django 得到错误的请求
- javascript - 服务数据变化时自动刷新导航栏
- wpf - WPF:SizeChanged 总是被解雇
- metamodel - Apache 元模型已退役。备择方案?
- node.js - 与猫鼬聚集在一起
- javascript - “reduce”函数如何将给定“array”中的第一个元素作为“start”参数?
- haskell - 在类型族中匹配无效的 Nat 表达式,如 (0 - 1)
- python - 如何在安装了多个版本的 python 的同时在当前版本的 python 中安装 pyaudio 模块?
- python - 将 ndarray 添加到数据框中,然后返回到 ndarray
- python - 在python中计算非线性回归的库克距离