0

2 つの関数を一緒にリンクするエレガントな方法を手伝ってくれるかもしれません。

  1. 最初のものは、「getScript」を使用して外部 URL から値を取得します。
  2. 2 つ目は、最初の関数を待ちます。その値を取得し、それを使って何かをします。

これが私が試したものです。すべてが待機部分とは別に機能するはずです(それらは最もインプです):)

理解を深めるためにコードにコメントを付けました。

/**
 * Test Class.
 */
 var Test = function() {

    var cookieEmail;

    this.init = function() {

        var script = 'http://www.script.com';

        jQuery.getScript(script, function(){
            cookieEmail = typeof (functionOnScriptCom) == 'undefined' ? '' : functionOnScriptCom('V_ElqEmailAddress');
        }
    }

    this.init2 = function(){
        // I want to do something with the variable "cookieEmail", after it has been retrieved using getScript.
        cookieEmail = cookieEmail.toLowerCase();
    }

 }

 jQuery(document).ready(function(){

    var test = new Test();

    test.init();
    // I need a way to wait for -- test.init -- getScript function to retrieve the ---cookieEmail--- value.
    // When cookieEmail's value has been retrieved, I want to be able to call:

    test.init2();

 });
4

3 に答える 3

3

getScript非同期呼び出しであるため待機しないinit()ため、コールバック関数を受け入れるように変更してからinit2、そのコールバックで実行する必要があります。

this.init = function(callback) {
    var cookieEmail;
    var script = 'http://www.script.com';

    jQuery.getScript(script, function(){
        cookieEmail = typeof (functionOnScriptCom) == 'undefined' ? '' : functionOnScriptCom('V_ElqEmailAddress');
        callback(cookieEmail);
    }
}

//Modify init2 to accept a param
this.init2 = function(cookieEmail){

これで、次のことができます。

test.init(function(data) {
    init2(data);
}
于 2013-09-19T17:23:41.750 に答える
0

init正常に実行された後に実行される関数にコールバックを渡しますgetScript。このようなもの:

var Test = function() {

    var cookieEmail;

    this.init = function( callback ) {

        var script = 'http://www.script.com';

        jQuery.getScript(script, function(){
            cookieEmail = typeof (functionOnScriptCom) == 'undefined' ? '' : functionOnScriptCom('V_ElqEmailAddress');
            callback();
        }
    }

    this.init2 = function(){
        // I want to do something with the variable "cookieEmail", after it has been retrieved using getScript.
        cookieEmail = cookieEmail.toLowerCase();
    }

}

jQuery(document).ready(function(){

    var test = new Test();

    test.init( function() { test.init2(); });
});
于 2013-09-19T17:24:05.103 に答える