Javascript https.request在回调-nodeJS下不工作

Javascript https.request在回调-nodeJS下不工作,javascript,node.js,http,async.js,Javascript,Node.js,Http,Async.js,我正在使用https库调用GoogleAPI。当它作为一个独立函数调用时,它可以完美地工作,但在async.瀑布下不工作 我肯定,我做错了什么。如果你能指出错误就好了。以下是片段: 我也没有看到任何错误。它只是退出程序。我用async做了什么错事吗 提前感谢。由于nodej的异步类型,以及您编写函数的方式,req.end将在响应到达之前执行。将请求端移到请求内。。。和res.on。您只希望在收到响应或错误后结束请求。此外,您应该在res.on'data'中添加返回回调,以便通知async函数已完

我正在使用https库调用GoogleAPI。当它作为一个独立函数调用时,它可以完美地工作,但在async.瀑布下不工作

我肯定,我做错了什么。如果你能指出错误就好了。以下是片段:

我也没有看到任何错误。它只是退出程序。我用async做了什么错事吗


提前感谢。

由于nodej的异步类型,以及您编写函数的方式,req.end将在响应到达之前执行。将请求端移到请求内。。。和res.on。您只希望在收到响应或错误后结束请求。此外,您应该在res.on'data'中添加返回回调,以便通知async函数已完成执行

 async.waterfall([
  (callback) => {
    console.log("In the first callback");

    const options = {
      host: 'www.googleapis.com',
      path: `/oauth2/v4/token?code=${authorizationCode}&client_id=${clientId}&client_secret=${clientSecret}&redirect_uri=${redirectUri}&grant_type=${grantType}`,
      port: 443,
      method: 'POST',
      headers: {
        'Content-Type': 'application/x-www-form-urlencoded'
      }
    };

    const req = https.request(options, (res) => {
      console.log("Inside Request - response came");
      console.log(`statusCode changed: ${res.statusCode}`);

      let geoData = [];
      res.on('data', (d) => {
        geoData.push(d);
      });

      res.on('end', () => {
        try {
          geoData = JSON.parse(Buffer.concat(geoData).toString());
          console.log(geoData);

          const response = {
            statusCode: res.statusCode,
            body: JSON.stringify(geoData),
          };

          return callback(null, response);
        } catch (error) {
          return callback(error);
        }
      });
    });

    req.on('error', (e) => {
      return callback(e.message);
    });

    req.end();

    console.log("End of first callback");
  }
], (err, result) => {
    if (err) {
      return err;
    }
    return result;
});