我正在使用带有应用程序首选项插件的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 :(得分:3)
问题是,你的回调实际上并没有为x设置一个值。所以,你将有其他方法去做你正在做的事情,因为返回值不起作用。
答案 1 :(得分:3)
你正在使用异步函数,你不能像你一样分配,因为函数还没有返回,所以你得到一个未定义的。您需要使用回调函数。
这意味着在成功函数内部,您可以使用“returnValue”执行任何操作。