node.js - 在节点 https.request 调用之后,我应该在哪里放置回调以返回数据?
问题描述
我正在尝试使用节点http
本机库读取请求的内容
我想发出一个 POST 请求,我已经成功地做到了,但是然后使用保存的响应块使用我的 lambda 函数上的回调将它们作为整体输出。
这是我的代码:
getData: function (event, context, callback) {
let inputData = event.body;
let requestData = Object.assign({}, inputData);
var dataRequest = 'field='+ requestData.Field1;
var options = {
method: 'POST',
hostname: 'my.hostname.com',
path: '/',
headers: {
"content-type": "application/x-www-form-urlencoded",
"connection" : "keep-alive",
"user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.139 Safari/537.36",
}
};
var dataStr = "";
var req = https.request(options, function (response) {
response.on('data', (chunk) => {dataStr += chunk;});
response.on('end', () => {
console.log(response.statusCode + " " + dataStr);
//(*) causes "hang up socket error"
return callback(dataStr);
});
});
req.on('error', err => {
return callback("request error:" + err);
})
req.write(dataRequest);
req.end(); //maybe req.end(callback(null,dataStr))?;
//on commented (*) works fine but dataStr string comes empty
callback(null,dataStr);
}
我可以在哪里放置回调以输出dataStr
变量内容作为此端点的响应?
感谢您的洞察力。
解决方案
对于您的代码,将回调方法放在已经存在的“end”和“error”回调中是正确的。从代码末尾删除回调。
您可以在代码中的任何位置保留回调,但如果您想返回数据,那么在这种情况下,最好保留在该函数的回调中。
还有一件事,回调不会结束代码的执行,直到您返回主处理程序
推荐阅读
- prometheus - 如何在 Prometheus 警报管理器的分组查询中为每个时间序列创建单独的警报?
- markdown - pandoc citeproc 从降价到降价但呈现引用
- arrays - 从txt文件读入结构
- python - 如何在不使用 selenium 的情况下仅使用 python 请求绕过 reCAPTCHA v2?
- .net - Graph API:修改目录内文件的内容
- r - 在R中嵌套for循环以进行模拟
- kubernetes - AKS 上的混沌网格
- sql - SQL 代码无法为 2 个学生值运行
- snowflake-cloud-data-platform - 雪花熊猫连接问题
- validation - Data.Either.Validation monoid 实现,ok+error=ok?