我还是NodeJS的新手。我的问题是我有一个包含https.request()的“ main”函数中正在等待的异步函数,但是程序没有进入其中。
下面是我的代码的格式。
const https = require('https');
exports.handler = async (event, context, callback) => {
var responseBody = await getNextCorrId();
console.log(responseBody);
};
async function getNextCorrId(event){
return new Promise((resolve, reject) => {
const options = {
host: 'something',
path: 'something',
method: 'GET',
headers: {
'Accept':'something',
'Content-Type':'something',
'Authorization': 'something'
},
};
const req = https.request(options, function (res) {
console.log("Went inside request");
res.on('end', function () {
var responseBody = "Well hello there";
resolve(responseBody );
});
});
req.on('error', function(e) {
console.log('problem with request: ' + e.message);
});
req.end();
});
}
我期望console.log(responseBody)
时我会得到
"Went inside request"
"Well hello there"
在控制台中。相反,我得到了[object Promise]
答案 0 :(得分:0)
在功能async
之前删除关键字getNextCorrId(event)
。添加async
关键字会将函数的返回值包装到Promise对象中。但是,您从函数中返回了Promise,这意味着它实际上在Promise中返回了Promise。而当您await
时,您仍然会得到一个承诺,即内在的承诺。更高版本的Node.js似乎已对此进行了优化,如果它们在运行时看到类似的情况,它们会自动为您解开上层Promise。