0

我正在使用带有应用程序首选项插件的 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”?

4

2 回答 2

3

问题是,您的回调实际上并没有为 x 设置值。所以,你将有一些其他的方式来做你正在做的任何事情,因为返回值不起作用。

于 2012-05-28T21:44:27.203 回答
3

您错误地使用了异步函数,您不能像现在这样分配,因为该函数尚未返回,因此您得到一个未定义的。您需要改用回调函数。

这意味着在成功函数中,您可以使用“returnValue”做任何您需要做的事情。

于 2012-05-28T21:44:58.873 回答