2016-12-29 1 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()はintentedとして動作します。行をすばやく踏むと前述のエラーが発生します。

誰かが私にこれがなぜ起こっているのか、それをどう解決するのか説明できますか?私はAPIから情報を得るのが初めてです(私はちょうどそれらのことを聞いたことがあります)、私はインターネットからまとめられた情報からこのコードを考え出しました。

答えて

0

getコールが返される前にdataCopyを記録しています。デバッグモードでは、イベントのスタントマンの性質が異なるかもしれません。

コール後に値を記録する場合は、コンソールログ呼び出しを匿名関数に移動します。

0

$に.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まだ)(.then出た後、データの値が含まれていますか? – Michael

+0

心配しないで、私は友人から気づいた。 – Michael

関連する問題