2014-12-14 2 views
0

Я только сканирую в JS, поэтому, вероятно, решение очевидно.Выполнение кода после вызова динамического числа функций

Я пишу расширение Chrome, которое в действии браузера (после нажатия кнопки расширения) считывает несколько страниц и с каждого из них извлекает целое число. Затем он создает таблицу с этими целыми числами. Я делаю это с AJAX, поэтому он асинхронен, и перед созданием таблицы я хочу иметь все целые числа.

Я прочитал эти темы:

... и написал код, который не работает.

var sum = 0; 

document.addEventListener('DOMContentLoaded', function() { 
    var deferreds = []; 
    var users = [...], pages = [...]; 
    for(i = 0; i < users.length; ++i) { 
     for(j = 0; j < pages.length; ++j) 
      deferreds.push(window[pages[j]](users[i], pages[j])); 
    } 
    $.when.apply(null, deferreds).done(function() { 
     alert("sum: " + sum); 
    }); 
}); 

function Name(user, page) { 
    $.get("http://page2/" + user, function(data) { 
     sum += 7; 
    }); 
    return 7; 
} 

function Name2(user, page) { 
    $.get("http://page/" + user, function(data) { 
     sum += 84; 
    }); 
    return 84; 
} 

Так что бдительные печатает 0 вместо 91. Я вырезал часть со столом, как все поля являются «неопределенными» в любом случае. Если я получу сумму = 91, я, вероятно, получу таблицу.

ответ

0

Как я уже сказал - очевидная ошибка. Функции должны выглядеть так:

function Name(user, page) { 
    return $.get("http://page2/" + user, function(data) { 
     sum += 7; 
    }); 
} 
Смежные вопросы