API を介して 2 つの異なる Google ブックスの本棚から書籍情報を取得し、それをカスタム HTML に入れようとしていますが、すべてが表示されているわけではありません。必要な順序で配置され、すべてが $ready 内にあります。何らかの方法でコールバックを使用する必要がありますか?
これが私のフィドルです:http://jsfiddle.net/bbrLv/
これは、順不同で起動するステップを示すコンソールのショットです: http://min.us/mQ0LNVYYT
API を介して 2 つの異なる Google ブックスの本棚から書籍情報を取得し、それをカスタム HTML に入れようとしていますが、すべてが表示されているわけではありません。必要な順序で配置され、すべてが $ready 内にあります。何らかの方法でコールバックを使用する必要がありますか?
これが私のフィドルです:http://jsfiddle.net/bbrLv/
これは、順不同で起動するステップを示すコンソールのショットです: http://min.us/mQ0LNVYYT
$.getJSON()は、jQuery の に基づく関数の 1 つとして$.ajax
、強力な Promise インターフェイスを実装しています。つまり、次のような方法で、実際にこれらの呼び出しを$.then()メソッドで連鎖させることができます。
$.getJSON(myquery, function(data) {
...
}).then(function() {
$.getJSON(myquery2, function(data) {
...
}
});
更新: これは更新された fiddleです。そこに簡単なハックを入れる必要があります: pubdateFixer 関数です。2 番目の getJSON ハンドラー内でフォームに入れました$(function(){})
が、これは正しくありません。関数は、最初のページが読み込まれたときではなく、getJSON コンテンツが到着した直後に起動する必要があります。
非同期関数を呼び出しています。
応答がサーバーから送信され、コールバックが呼び出される順序をまったく予測できません(はい、$.getJSON
最後の引数としてコールバックを使用するため、まだコールバックを使用しています)。
したがって、応答処理の特定の順序を確認する必要がある場合は、jquery then関数(最初にraina77owによって参照される)を使用して呼び出しをチェーンするか、別の保護メカニズム(たとえば、各応答のブール値といくつか)を追加する必要があります。希望の順序で操作を実行できるようにするコード行。
例えば :
function bigOperationNeedingBothAnswers() {
}
var answersStillNotArrived=2;
$.getJSON(firstQuery, function (data) {
// some things
if (--answersStillNotArrived==0) bigOperationNeedingBothAnswers();
}
$.getJSON(otherQuery, function (data) {
// some things
if (--answersStillNotArrived==0) bigOperationNeedingBothAnswers();
}