Почему эта функция JavaScript всегда возвращает «undefined» — и как это исправить?

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

Чего я хочу добиться, так это:

function populateList() {
    var a = 1;

    var number = getSettingFromApplicationPreferences('number');
    // number is always undefined

    var letter = getSettingFromApplicationPreferences('letter');
    // letter is always undefined

    number = (number) ? number : 1;
    letter = (letter) ? letter : 'b';

    // Here I'll do some DOM manipulation and use 'number' and 'letter' on it, and 
    // define new variables based on 'number' and 'letter'

}

вот вспомогательная функция, с которой мне нужна помощь:

function getSettingFromApplicationPreferences(setting) {

    var x = (function () {
        window.plugins.applicationPreferences.get(
            // setting
            setting, 
            // success callback
            function(returnValue) {
                console.log(setting + ': ' + returnValue);
                return returnValue;
            },
            // error callback
            function(error) {
                alert("Failed to get a setting: " + error);
                return false;
            }
        );
    })();

    return x;   
}

Вопрос
Как можно вернуть 'returnValue' из настроек приложения с помощью этой вспомогательной функции?

0
задан micadelli 28 May 2012 в 22:10
поделиться