Можно ли запустить функцию JavaScript ПОСЛЕ запуска Google Loader? - PullRequest
2 голосов
/ 01 января 2011

Я загружаю Google API, используя google.load(), и мне нужно обработать кое-что из того, что построено им, но мне нужно запустить 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 ]

2 голосов
/ 01 января 2011

Простой способ сделать это - создать анонимную функцию в 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) { так, чтобы вы не передавали в intialize анонимную функцию.

, а затем в feed.load(function(result) {}); вы можете просто сделать callback(), чтобы активировать ваш обратный вызов.


Вы говорите, что анонимная функция сбивает вас с толку. Позвольте мне сначала показать вам несколько способов написать функцию

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

Выше приведены неанонимные функции

Анонимные функции - это функции, которые не назначены переменной, поэтому синтаксический анализатор переходит к функции и не выполняет ее

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

Запусквыше будет отображаться Start и End в диалоговом окне, но Middle никогда не будет отображаться, поскольку функция не была выполнена.

Функция следующая:

( F )( P )

Где F - анонимная функция, а P -параметр, который должен находиться в области видимости, можноun анонимные функции, не присваивая функции переменной liek, так:

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

Так document передается в анонимную функцию и становится Doc в этой области, и Start, Middle и End все получатвыполняется как вы, используя самозапускаемую анонимную функцию

Хорошо, так что я, возможно, переборщил с объяснением, так плохо, просто быстро покажу вам, как работает оригинальный метод

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

Ajax работает асинхронно, что означает, что когда вы вызываете сервер, такой как Google, для получения какой-либо информации, ваш javascript будет продолжать выполняться, что означает, что пока вы ожидаете данных, выполняемых вашим javscript ..

Именно поэтому мы посвятили обратные вызовы так же, как обратный вызов initialize, который библиотека Google Javascript выполняет, когда получает данные, когда создает свои собственные и выполняет, когда мы этого хотим.

2 голосов
/ 01 января 2011

Да, в документации API указано, что вы можете включить функцию обратного вызова в третий параметр метода google.load().

Примерно так должно работать:

google.load("jquery", "1.4.2", {
    callback: function() {
        alert('Finished!');
    }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...