javascript - Javascript 获取变量问题
问题描述
平庸的javascript开发人员在这里需要一些帮助..
我想在 for 循环中多次对 url 进行 GET 调用。
我正在尝试使用 fetch,但由于承诺/时间情况,我无法弄清楚如何使其工作。
下面是代码,完全有可能 fetch 方法对我想要做的事情没有意义。非常感谢您帮助我编写代码或告诉我我是白痴并建议替代方案:)
var fromAmt = 100;
var fromOOP = 50;
var fromGM = 50;
var fromCur = "USD"
var toCur = ["USD","EUR","INR","GBP","SGD"];
var adjAmt = [];
async function getConversionAsync(fcur,tcur,amt)
{
let response = await fetch('https://data.fixer.io/api/convert?access_key=xyxyxyxyxyxyxy&from=' + fcur + '&to=' + tcur + '&amount=' + amt);
let data = await response.json()
return data;
}
for (i = 0; i < toCur.length; i++) {
getConversionAsync(fromCur,toCur[0].toString(),fromAmt)
.then(data => display(data));
}
function display(thing){
adjAmt.push(thing.result);
}
document.getElementById("something").innerHTML = adjAmt[0].toString();
解决方案
在您的示例中,document.getElementById("something").innerHTML = adjAmt[0].toString();
在将任何内容推送到adjAmt
. 在显示结果之前,您需要等待循环调用完成,为此您可以将所有内容包装在异步函数中。
const fromAmt = 100;
const fromOOP = 50;
const fromGM = 50;
const fromCur = 'USD';
const toCur = ['USD', 'EUR', 'INR', 'GBP', 'SGD'];
const adjAmt = [];
const getConversionAsync = async (fcur, tcur, amt) => {
const response = await fetch(`https://data.fixer.io/api/convert?access_key=xyxyxyxyxyxyxy&from=${fcur}&to=${tcur}&amount=${amt}`);
return response.json();
}
function display(thing) {
adjAmt.push(thing.result);
}
(async () => {
for (i = 0; i < toCur.length; i += 1) {
const data = await getConversionAsync(fromCur, toCur[0], fromAmt);
display(data);
}
document.getElementById('something').innerHTML = adjAmt[0].toString();
})();
推荐阅读
- java - ShareCompat.IntentBuilder - 如何删除自己的应用程序
- flask - 烧瓶登录:current_user 返回无
- html - 可访问性:YouTube 嵌入代码应具有标题属性
- namespaces - 如何在 Elixir Phoenix iex 控制台中停止强制模块命名空间?
- mysql - 在 SQL 中从多行创建一行
- python - 面板数据组的迭代和差异
- php - 需要在 laravel 中使用 DB::commit 两次以使事务正常工作
- symfony - Symfony 4 - GET / hi 未找到
- c++ - C++ - 使指向对象成为对象常量的一部分
- yii2 - Yii 验证多张图片上传