我有一个异步函数,当我console.log响应时,该函数返回未定义。调用该函数的代码位于Lambda函数内部,该函数本身是异步的,因此需要使用await
。尽管sendRequest函数在同一文件中,但在lambda函数之外。
// main.js
async sendRequest ...
exports.foobar = async ...
下面是调用该函数的代码(位于另一个函数内部)。
const response = await sendRequest(url)
console.log(response)
sendRequest异步函数,返回未定义
async function sendRequest (url) {
let code;
request({ url, timeout: 20000 }, function(error, response, body) {
if (error == 'ENOTFOUND' || error == 'ETIMEDOUT') {
response.statusCode = 500;
}
code = response.statusCode
return {
code,
error
}
});
}
答案 0 :(得分:4)
您需要从Promise
返回一个sendRequest
。 request
正在执行回调,但这不适用于异步等待。一般模式如下:
function sendRequest(...) {
return new Promise((resolve, reject) => {
// resolve(...) or reject(...);
});
}