2014-02-04 6 views
1

Я создаю простую библиотеку, используя google map v3. Концепция состоит в том, чтобы разделить все возможности карт Google на модульные функции, например, вызов геолокации возвращает только координату, так что эта координата может использоваться для отображения карты или декодирования в строки адреса или в качестве местоположения маркера. Карты Google асинхронны и для достижения этой «модульности», каждая функция должна иметь обратный вызов, который возвращает значение в блок обратного вызова.Форматирование возвращаемых значений из функций обратного вызова

Я использую простой пример ниже:

//simple functions 
function set(callback) { 
    var test = 'a String'; 
    callback(test);  
} 
function print(val) { 
    alert(val); 
} 

//run 

set(function(){ 
    print(arguments[0]); 
    //will be followed by another function, dll 
}); 

Как вы можете видеть, внутри блока обратного вызова, я могу получить возвращаемое значение путем доступа к arguments переменным. Ну да, хотя он работает, он не выглядит информативным. То, что я хочу достичь, - , как я могу переименовать arguments во что-то информативное, такое как lon, lat и т. Д. Поэтому мне не нужно обращаться к аргументам [0] для x, аргументы [1] для y, которые отличаются от функция для работы.

Мое предположение, используя приведенный выше пример, можно ли назвать print(test), а не print(arguments[0])? Я ожидаю использовать точные значения переменных и имя, которое я сбросил внутри callback(//here//), не создавая перед ним никакой глобальной переменной.

Заранее спасибо

ответ

2

Вы не можете использовать имя, которое вы дали локальную переменную внутри set, но вы можете назвать его в функции вы передаете вset:

set(function(test){ 
    print(test); 
    //will be followed by another function, dll 
}); 

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

+0

Я вижу, поэтому я могу обернуть несколько переменных в качестве объекта, например, внутри set test = {lat: 12345, lon: 12345}; callback (test), затем используя ваш набор решений (function (test) {print (test. lat)}); и т.д. Спасибо. :), но прежде чем я выберу ответ, я буду ждать альтернатив других людей (позже, если они есть) – AzDesign

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