Я пытаюсь понять, как работать с асинхронной функцией в узле 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)
});
});