jQuery .get()函数只能在调试器模式下工作
问题描述:
我试图从http://numbersapi.com/random/获取数据,它会给你一个纯文本响应,并将其保存到一个变量供以后使用。这里是我的javascript代码:jQuery .get()函数只能在调试器模式下工作
var myFunction = function() {
var dataCopy = "not successful";
$.get('http://numbersapi.com/random/', function(data) {
dataCopy = data;
});
console.log(dataCopy);
}
其中myFunction()由按钮激活。
dataCopy在控制台中记录为“不成功”,而不是每次来自API的数据。奇怪的是,如果我将调试器语句作为myFunction()的第一行,使用我的浏览器的调试器,并且非常缓慢地执行,那么myFunction()将以满意的方式工作。快速走过线会导致前面提到的错误。
有人可以向我解释为什么会发生这种情况以及如何补救?我是从API获取信息的新手(我刚刚听说过他们),并且我从互联网上拼凑的信息中找出了这些代码。
答
在调用返回之前,您正在记录dataCopy
。在调试模式下,get的事件特技人员性质可能不同。
如果要在调用后记录值,请将控制台日志调用移入匿名函数。
答
的$不用彷徨方法是异步的,所以你可以使用then像:
var myFunction = function() {
var dataCopy = "not successful";
$.get('http://numbersapi.com/random/', function(data) {
dataCopy = data;
}).then(function() { // wait for get and then do your stuff
console.log(dataCopy);
});
}
myFunction();
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
将dataCopy仍然含有。那么在退出后,数据的价值()? – Michael
没关系,我从朋友那里找到了。 – Michael