这是index.js文件的代码
var request = require('request');
var requestHandling = require('../routes/request_handling_functions');
router.get("/example1", function (req, res) {
var result =
requestHandling.requestMethodGet('http://localhost:8083/getUserInfo/865c2c25-
d9e7-412d-a064-326bd66c9e9c', res);
console.log("===RESULT=====");
console.log(result);
});
在上面的代码中,我希望函数 requestMethodGet 将结果返回到result变量中,然后根据需要操纵结果,然后显示给用户,同时我也在控制台返回的结果。 但这是问题所在,因为Node.js是异步语言,因此它首先打印结果,然后调用令人讨厌的函数 requestMethodGet 。
这是requestMethodGet的代码
requestMethodGet: function (url, res) {
//SET ALL THESE PARATMETER TO MAKE REQUEST
request.get({url: url}, function (e, r, body) {
var errorResult = module.exports.validateResponseeData(e);
console.log("====errorResult===in===Get==method====");
console.log(errorResult);
if (errorResult != "continue") {
console.log("===im in not continue");
return errorResult;
} else {
//LOGING THE RESPONSE BODY
log.info('body:', body);
var responseData = JSON.parse(body);
console.log("======RESPONSE=========DATA=====================");
console.log('error:', e);
console.log('statusCode:', r && r.statusCode);
console.log('body:', body);
console.log("====================================");
console.log(responseData);
return responseData;
}
});
}
我希望路由器的get方法在编写代码时按顺序运行代码。但是我到处搜索都找不到任何解决方案,因此请在这里找到我的解决方案。 如果需要任何信息来解决此问题,请通知我。
答案 0 :(得分:0)
您可以使用Promise
或async/await
答案 1 :(得分:0)
尝试以下方法。它从您的requestMethodGet函数返回一个承诺,然后您等待直到解决该问题后再记录响应。我建议您阅读有关Promises的更多内容,以了解其工作原理。
requestMethodGet: function (url, res) {
return new Promise((resolve,reject) => {
//SET ALL THESE PARATMETER TO MAKE REQUEST
request.get({url: url}, function (e, r, body) {
var errorResult = module.exports.validateResponseeData(e);
console.log("====errorResult===in===Get==method====");
console.log(errorResult);
if (errorResult != "continue") {
console.log("===im in not continue");
reject(errorResult);
} else {
//LOGING THE RESPONSE BODY
log.info('body:', body);
var responseData = JSON.parse(body);
console.log("======RESPONSE=========DATA=====================");
console.log('error:', e);
console.log('statusCode:', r && r.statusCode);
console.log('body:', body);
console.log("====================================");
console.log(responseData);
resolve(responseData);
}
});
});
}
//INDEX.js
router.get("/example1", function (req, res) {
requestHandling.requestMethodGet('http://localhost:8083/getUserInfo/865c2c25-
d9e7-412d-a064-326bd66c9e9c', res).then((result) => {
console.log("===RESULT=====");
console.log(result);
}).catch((err) => {
console.log("===Error=====");
console.log(err);
});
});