lambda node.js 异步函数无法访问回调
lambda node.js async function can't access to callbacks
我正在使用异步函数,但在访问回调函数时遇到问题。
我可以 console.log( req) 成功但 (res) 都不能 (body)
回调函数中的所有console.log都没有显示,我只得到(req)响应
module.exports.handler = async function (event,context){
let result = await s3.listObjects(params).promise();
console.log(result.Contents);
var req = http.request(post_options,function(res) {
console.log("resresresresresres");
console.log("statusstatusstatustats");
console.log("headersheadersheaders");
res.setEncoding('utf8');
res.on('data', (chunk) => {
console.log("body");
});
});
console.log(req)
}
我也这样试过,我得到了相同的结果,只显示了 (req)
module.exports.handler = async function (event,context){
let result = await s3.listObjects(params).promise();
console.log(result.Contents);
var req = http.request(post_options,res=> {
console.log("resresresresresres");
console.log("statusstatusstatustats");
console.log("headersheadersheaders");
res.setEncoding('utf8');
res.on('data', (chunk) => {
console.log("body");
});
});
console.log(req)
}
承诺 http.request 调用。
function postCall(postOptions) {
http.request(postOptions, function(res) {
console.log("resresresresresres");
console.log("statusstatusstatustats");
console.log("headersheadersheaders");
res.setEncoding('utf8');
res.on('data', (chunk) => {
return chunk;
});
});
}
or
function postCall(postOptions) {
return new Promise((resolve, reject) => {
http.request(postOptions, function(res) {
console.log("resresresresresres");
console.log("statusstatusstatustats");
console.log("headersheadersheaders");
res.setEncoding('utf8');
res.on('data', (chunk) => {
resolve(chunk);
});
});
})
}
Then Lambda function
module.exports.handler = async function (event,context){
let result = await s3.listObjects(params).promise();
console.log(result.Contents);
// please define post request params i.e postOptions
const response = await postCall(postOptions);
console.log(response);
}
我正在使用异步函数,但在访问回调函数时遇到问题。
我可以 console.log( req) 成功但 (res) 都不能 (body)
回调函数中的所有console.log都没有显示,我只得到(req)响应
module.exports.handler = async function (event,context){
let result = await s3.listObjects(params).promise();
console.log(result.Contents);
var req = http.request(post_options,function(res) {
console.log("resresresresresres");
console.log("statusstatusstatustats");
console.log("headersheadersheaders");
res.setEncoding('utf8');
res.on('data', (chunk) => {
console.log("body");
});
});
console.log(req)
}
我也这样试过,我得到了相同的结果,只显示了 (req)
module.exports.handler = async function (event,context){
let result = await s3.listObjects(params).promise();
console.log(result.Contents);
var req = http.request(post_options,res=> {
console.log("resresresresresres");
console.log("statusstatusstatustats");
console.log("headersheadersheaders");
res.setEncoding('utf8');
res.on('data', (chunk) => {
console.log("body");
});
});
console.log(req)
}
承诺 http.request 调用。
function postCall(postOptions) {
http.request(postOptions, function(res) {
console.log("resresresresresres");
console.log("statusstatusstatustats");
console.log("headersheadersheaders");
res.setEncoding('utf8');
res.on('data', (chunk) => {
return chunk;
});
});
}
or
function postCall(postOptions) {
return new Promise((resolve, reject) => {
http.request(postOptions, function(res) {
console.log("resresresresresres");
console.log("statusstatusstatustats");
console.log("headersheadersheaders");
res.setEncoding('utf8');
res.on('data', (chunk) => {
resolve(chunk);
});
});
})
}
Then Lambda function
module.exports.handler = async function (event,context){
let result = await s3.listObjects(params).promise();
console.log(result.Contents);
// please define post request params i.e postOptions
const response = await postCall(postOptions);
console.log(response);
}