我正在尝试从http://numbersapi.com/random/获取数据,这将为您提供纯文本响应,并将其保存到变量供以后使用。这是我的javascript代码:
var myFunction = function() {
var dataCopy = "not successful";
$.get('http://numbersapi.com/random/', function(data) {
dataCopy = data;
});
console.log(dataCopy);
}
其中myFunction()由按钮激活。
dataCopy在控制台中记录为“not successful”,而不是每次都来自API的数据。奇怪的是,如果我将调试器语句作为myFunction()的第一行,使用我的浏览器的调试器,并非常缓慢地跨越行,那么myFunction()将按预期工作。快速踩过线会导致前面提到的错误。
有人可以向我解释为什么会发生这种情况以及如何解决这个问题?我是从API获取信息的新手(我刚刚听说过它们),我从互联网拼凑的信息中找出了这些代码。
答案 0 :(得分:1)
$。get 方法是异步的,因此您可以像以下一样使用then:
CREATE TABLE user_data (
id INT(10) UNSIGNED AUTO_INCREMENT PRIMARY KEY NOT NULL,
firstName VARCHAR(255) NOT NULL,
lastName VARCHAR(255) NOT NULL,
postcode VARCHAR(255) NOT NULL,
telephoneNumber VARCHAR(255) NOT NULL,
emailAddress VARCHAR(255) NOT NULL,
dateTime TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP );
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();
答案 1 :(得分:0)
您在get调用返回之前登录dataCopy
。在调试模式下,get的事件特技演员的性质可能不同。
如果要在通话后记录值,请将控制台日志调用移至匿名函数。