2011-01-01 10 views
2

私はgoogle.load()を使用して、GoogleのAPIをロードしていると私はそれによって構築されているものの一部を処理する必要がありますが、私はそれはすでに完全にロードされた後でJavaScriptを実行する必要があり、それが起こることを確認する方法はありますか?Googleローダーの実行後にJavaScript関数を実行できますか?

ここでは画像のリストを作成する方法を説明しますが、各imgタグに属性を追加する必要がありますが、それが正しく構築されるまではできません。

google.load("feeds", "1"); 

function initialize() { 
    var feed = new google.feeds.Feed("myfeed.rss"); 

    feed.load(function(result) { 
     if (!result.error) {    

      var container = document.getElementById("feed"); 

      for (var i = 0; i < result.feed.entries.length; i++) {    

       var entry = result.feed.entries[i]; 

       var entryTitle = entry.title; 
       var entryContent = entry.content; 

       imgContent = entryContent + "<p>"+entryTitle+"</p>"; 

       var div = document.createElement("div"); 
       div.className = "image";    

       div.innerHTML = imgContent; 

       container.appendChild(div); 
      } 
     } 
    }); 
} 

google.setOnLoadCallback(initialize); 

答えて

2

簡単な方法はとても似setOnLoadCallbackに匿名関数を作成することである:

google.setOnLoadCallback(function(){ 

    //Run the Initialize Function 
    initialize(function(){ 
     //Run anything else here like 
     alert("My function can run here :)") 
    }); 
}); 

、その後、ちょうどあなたの初期化関数を変更します。

f unction initialize() {>function initialize(callback) {これにより、無名関数を初期化関数に渡すことはありません。

、その後feed.load(function(result) {});以内にあなたは自分のコールバックをアクティブにするcallback()を行うことができます。あなたは私が最初にあなたに上記の非匿名です

  • function hello(){}
  • hello = function(){}

関数を記述するためにいくつかの方法をお見せしましょう、無名関数はあなたを混乱させると言う


機能

無名関数は、ARパーサが機能の上に行くと、それを上記のダイアログでの開始と終了を示しますが、機能はしていないとして中東が表示されることはありませんを実行

alert("Start") 
function() 
{ 
    alert("Middle") 
} 
alert("End"); 

を実行しないように、変数に割り当てられていない電子機能実行されました。

次機能:

Fは、匿名関数であり、Pがスコープ内にあるべきPARAMです、あなたが直接、これまでそう変数liekに機能を割り当てずに無名関数を実行することができ
(F)(P) 

alert("Start") 
(
    function(Doc){ 
     alert("Middle"); 
    } 
)(document) 
alert("End") 

だからdocumentはあなたがself executed anonymous function

を使用して実行されます匿名関数に渡されて、その範囲内のドキュメントになり、スタート、中東およびすべてを終了します[OK]を

は、私はちょうどすぐにそう病気の説明とトップの上に行って、元の方法は、あなたがそのようなのためのGoogleのように、サーバーを呼び出すときにことを意味している

http://en.wikipedia.org/wiki/Ajax_(programming)

Ajaxは非同期ですがどのように機能するかをお見せしている場合がありますいくつかの情報は、あなたのjavascriptは実行を続行します。つまり、あなたのjavscriptが実行しているデータを待っている間に..

これは私たちがinitializeコールバックのようにコールバックを捧げた理由です。データ、独自のものを作成していた私たちがしたいときにecuting。

+0

Robertさん、ありがとうございました。私はあなたが気にしない場合、なぜそれがより多くの作品を理解したいと思います:)匿名関数の部分は私を混乱させる.. lol – thatryan

+0

いくつかのヒントを更新しました – RobertPitt

+0

素晴らしい人、ありがとうトン。私は以前にそれらを使っていましたが、それが何をしているのか正確にはわかりませんでした。ありがとう:) – thatryan

2

はい、API documentationはあなたがgoogle.load()メソッドの第三引数にコールバック関数を含めることができることを指定します。このような

何か作業をする必要があります。これを行うには

google.load("jquery", "1.4.2", { 
    callback: function() { 
     alert('Finished!'); 
    } 
}); 
+0

私はそれが一度読み込みを終了したばかりのコールバックだと思います。私はそれを試して、関数は作成された結果のリストで動作しません。 – thatryan

+0

ローダーが何かをロードし終えたら、コールバックが必要だと思ったのですが?おそらくあなたが今持っているもののいくつかを投稿することは、あなたが必要としていることを理解するのに役立ちます... –

+0

私は元の投稿にコードを追加しました。ありがとう! – thatryan

関連する問題