节点js在20秒后发送多个请求

我的节点js应用程序正在发出多个http请求,如果有20秒的响应延迟。 以下是相同的示例代码。

首先我从浏览器调用getAPI函数。 getApi函数调用getAccessToken API,接收到accesstoken后,我调用testApi。 现在,如果testApi的响应延迟了20秒,那么getAccessToken Api会再次被调用。 我不想用诺言。 任何人都可以指出我在这里失踪或做错吗?

shttp = require('http-https'); exports.getAPI = function(typeObj, request, response, callback) { var userConf; //contains info such as port, host, url etc _this.getAccessToken(function(tokenResponse) { var tokenInfo = JSON.parse(tokenResponse); var accessToken = JSON.parse(tokenInfo.response); accessToken = accessToken.access_token; if(accessToken) { _this.testApi(userConf,accessToken,function(sjmResponse) { callback(sjmResponse); } } else { callback(JSON.stringify({"payLoad":null,"reasonCode":"fail","status":null})); } }); }; exports.getAccessToken = function(cb) { var tokenConf; //contains info such as port, host, url etc var httpReq = shttp.request(tokenConf, function(res) { res.setEncoding('utf8'); if (res.statusCode == 200) { var body = ""; res.on('data', function (result) { body += result; }); res.on('end', function (){ cb(JSON.stringify({error: '', response: (body)})); }); } else { cb(JSON.stringify({error: 'Failed to get user access token '+res.statusCode, response:''})); } }); httpReq.on('error', function(e) { cb(JSON.stringify({error: 'Failed to get user access token'+e, response:''})); }); httpReq.end(); }; exports.testApi = function(userConf,accessToken,sjmCallback) { var userConf; //contains info such as port, host, url etc var httpSubmitReq = shttp.request(userConf, function(res) { res.setEncoding('utf8'); if (res.statusCode == 200) { var body = ""; res.on('data', function (result) { body += result; }); res.on('end', function () { sjmCallback(body); }); } else { sjmCallback(JSON.stringify({"payLoad":null,"reasonCode":"fail","status":null})); } }); httpSubmitReq.on('error', function(e) { sjmCallback(JSON.stringify({"payLoad":null,"reasonCode":"fail","status":null})); }); httpSubmitReq.end(); }; 

 app.get('/testApi', function (req, res) { var typeObj = {}; typeObj.apiType= 'testApi'; try { getAPI(JSON.stringify(typeObj), req, res, function(response) { res.end(response); }); } catch(err) { res.end(err); } });