Узел асинхронной функции JS? - PullRequest
0 голосов
/ 20 мая 2018

Я пытаюсь понять, как работать с асинхронной функцией в узле js.Я новичок и хотел бы получить руководство по этой ошибке, с которой я сталкиваюсь.Я делаю POST-запрос от моей функции и помещаю данные в массив.Идея состоит в том, чтобы отправить массив, как только счетчик циклов будет готов.Однако по какой-то причине я получаю пустой массив перед выполнением запроса post.Как я могу исправить эту ошибку?

    function checkforcurrency(vals,basecurrency,targetcurrency) {

        var cval = []

        var currencyexchange = basecurrency + "_" + targetcurrency;


        return new Promise(
            function (resolve, reject) {

                for (var i = 0; i < vals.length; i++) {

                    split_string = vals[i].split(/(\d+)/)
                    var currency_determine = split_string[0]
                    var currency_value = parseFloat(split_string[1])
                    console.log('currency', currency_determine)
                    var cexchange = basecurrency + "_" + targetcurrency;


                    if (currency_determine.length < 2) {


                        request.get('http://free.currencyconverterapi.com/api/v5/convert?q=' + cexchange + '&compact=y', function (err, res, body) {

                            var s = JSON.parse(body)
                            console.log('sss', s)
                            console.log('cjdjdkkdkd', s[cexchange])

                            baseconversionrate = parseFloat(s[cexchange].val);
                            console.log('cvb', baseconversionrate)

                            var finalres = currency_value * baseconversionrate;
                            console.log('kkk', finalres)
                            if (finalres != null) {
                                console.log('hdhdhhdhdhdhdhdhhd', finalres)
                                cval.push(finalres);

                            }


                        })


                    }
                    if (currency_determine.length > 2) {

                        var currencyexchange = currency_determine + "_" + targetcurrency;
                        request.get('http://free.currencyconverterapi.com/api/v5/convert?q=' + currencyexchange + '&compact=y', function (err, res, body) {

                            var s = JSON.parse(body)
                            console.log('sss', s)
                            console.log('ckkdkd', s[currencyexchange])

                            conversionrate = parseFloat(s[currencyexchange].val);
                            var finalres = vals[i] * conversionrate;


                            cval.push(finalres);


                        });


                    }


                }

                setTimeout(resolve, 120000)


                console.log('cva;', cval)
                resolve(cval)


            })


    }


app.post('/financialtrading', function(req, res) {

    console.log('Called',req.body)

    var rev =req.body.revenue;

    var profit = req.body.profit;
    var grossincome = req.body.grossincome;

    var basecurrency = req.body.basecurrency;

    var targetcurrency = req.body.targetcurrency;




       checkforcurrency(rev,basecurrency,targetcurrency).then(function (result) {

           var resu = {"res":result}
           res.send(resu)

        });











});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...