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

非同期関数を誤って使用しています。関数がまだ返されていないため、そのまま割り当てることはできません。そのため、未定義になります。代わりにコールバック関数を使用する必要があります。

つまり、success関数内では、「returnValue」で必要なことは何でも実行します。

于 2012-05-28T21:44:58.873 に答える