Javascript https.request在回调-nodeJS下不工作
我正在使用https库调用GoogleAPI。当它作为一个独立函数调用时,它可以完美地工作,但在async.瀑布下不工作 我肯定,我做错了什么。如果你能指出错误就好了。以下是片段: 我也没有看到任何错误。它只是退出程序。我用async做了什么错事吗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函数已完
提前感谢。由于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;
});