异步函数返回未定义

时间:2020-06-11 17:14:06

标签: javascript node.js async-await

我有一个异步函数,当我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
    }
  });
}

1 个答案:

答案 0 :(得分:4)

您需要从Promise返回一个sendRequestrequest正在执行回调,但这不适用于异步等待。一般模式如下:

function sendRequest(...) {
   return new Promise((resolve, reject) => {
      // resolve(...) or reject(...);
   });
}