2016-12-29 127 views
0

我試圖從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獲取信息的新手(我剛剛聽說過他們),並且我從互聯網上拼湊的信息中找出了這些代碼。

回答

0

在調用返回之前,您正在記錄dataCopy。在調試模式下,get的事件特技人員性質可能不同。

如果要在調用後記錄值,請將控制檯日誌調用移入匿名函數。

0

$不用彷徨方法是異步的,所以你可以使用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

相關問題