javascript提取提取数据



我设置了这个获取结构(我在这里学到了:https://www.kirupa.com/html5/making_http_requests_js.htm),但我无法执行提取的数据的功能:

var arr = [];
var dat=[1,2];
var prova = 5;
fetch('https://ipinfo.io')
.then(function(response) {
return response.text();
}).then(function(text) {
arr.push(text);
dat = arr;
prova=prova+1;
//console.log(arr);
});
console.log(arr);
console.log(dat);
console.log(prova);
//document.getElementById('pText').innerHTML = dat[0];
console.log(arr)  -> undefined
console.log(dat)  -> [1,2]
console.log(prova) -> 5

我将变量定义为全局变量,并在函数中进行了修改,但全局变量并没有按预期进行更改,你知道为什么吗?

提前感谢您的支持。

很抱歉,我没有在另一个链接的问题中找到我的问题的答案:如果我把";console.log";在我的函数中,它也在我的代码中工作,问题是让函数外的fetch结果可见,因为你看到函数内的修改不会更新全局变量。

对于一个普通函数,它可以工作,但对于异步函数,它不能工作,为什么?以及如何取出数据?

fetch返回一个promise。与此同时,脚本将转到promise之外的下一行,在您的情况下是console.log(arr(;

上面的代码是使用async/await重写的。在我看来,它使代码可读性更强。

async function run() {
var response = await fetch('https://ipinfo.io');
var text = await response.text();
arr.push(text);
dat = arr;
prova = prova + 1;
console.log(arr);
console.log(dat);
console.log(prova);
}
run();

最新更新