如何在node.js中顺序运行GET或POST方法

时间:2018-09-21 07:13:17

标签: node.js

  

这是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方法在编写代码时按顺序运行代码。但是我到处搜索都找不到任何解决方案,因此请在这里找到我的解决方案。   如果需要任何信息来解决此问题,请通知我。

2 个答案:

答案 0 :(得分:0)

您可以使用Promiseasync/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);
});

});