首页 > 解决方案 > 无法等待 Javascript 中的异步调用

问题描述

我给 AWS 打了一个电话,我得到了响应,回调看起来像这样:

const handleResponse = async (response) => {
  var responseBody = "";
  response.on("data", async function (chunk) {
    responseBody += chunk;
  });
  response.on("end", async function (chunk) {
    return responseBody;
  });
  return responseBody;
};

我目前的尝试是用这样的等待来调用这个函数:

const getLoadIds = async (payload) => {
  //   console.log(payload);
  const resp = await handleResponse(payload)
  console.log(resp) <--- this is undefined
}

如何从 response.on("end") 调用中获取响应?

这是原始的调用者代码:

  var client = new AWS.HttpClient();
  try {
    await client.handleRequest(request, null, async (res) => fn(res));
  } catch (err) {

fn是一个别名getLoadIds

标签: javascript

解决方案


你可能想要类似的东西

const handleResponse = (response) => {
  return new Promise((resolve) => {
    var responseBody = "";
    response.on("data", function (chunk) {
      responseBody += chunk;
    });
    response.on("end", function (chunk) {
      resolve(responseBody);
    });
  });
};

更新:thanx @Andrew Li,注意到答案中的错误问题


推荐阅读