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>

+0

将dataCopy仍然含有。那么在退出后,数据的价值()? – Michael

+0

没关系,我从朋友那里找到了。 – Michael