2013-03-12 2 views
1

Привет, у меня есть следующее.Установить глобальную переменную из async-функций

var g = new Array() ; 

$.getJSON(google, function(data) { 
    var i = 0 ; 
    $.each(data.items, function() { 
    var obj = new res(i, this.title, this.snippet, this.formattedUrl, 0) ; 
    g.push(obj) ; 
    i=i+1 ; 
    }); 
}); 

Мне нужно иметь доступ к массиву вне функции async.

+1

Пожалуйста, отформатируйте свой код –

+1

Если вы используете массив вне функции async, как вы узнаете, что он находится в правильном состоянии? – Fenton

+0

Если 'g' находится в той же области, что и вызов' getJSON', ваша анонимная функция является закрытием и уже имеет доступ к 'g'. Если это не так, вам нужно опубликовать более подробное описание вашей структуры кода. –

ответ

3

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

window.App = {}; // or just App = {}; 

, а затем положить глобальные вещи там

App.g = [];

И теперь вы можете получить доступ к своему пространству имен из любого места.

Обратите внимание, что вам все еще нужно знать, когда у вас могут быть выдающиеся запросы, изменяющие ваши глобальные переменные.

+0

Жаль, что я не мог голосовать больше одного раза. Это решает проблему, которая у меня была в течение многих лет. –

0

вы можете использовать .data(), который проще глобальных переменных.

Как это работает в том, что вы устанавливаете такие элементы, как это:

$('body').data('g', mydata); 

в любом месте, и получить его так:

$('body').data('g'); 

Конечно, это может быть на любом элементе, а не только body ,

Смежные вопросы