【问题标题】:Variable scope Javascript Module Pattern [duplicate]可变范围 Javascript 模块模式 [重复]
【发布时间】:2015-11-01 13:20:59
【问题描述】:

我有以下代码:

Main.User =  (function(){
    var currentUser = ''

    var get_current_user = function get_current_user(){


        Main.Mod.do_ajax('home/get_user_pnp_id','GET',function(data){


            currentUser =  data.username;


        },null);

        console.log(currentUser); //Doesn't work. It logs empty string.
        return currentUser;   
    }

    return {
        get_current_user : get_current_user,
    }
})();

Main.Mod.do_ajax() 的第三个参数是来自我的 ajax 调用的回调成功函数。但是我不能在该回调函数中设置currentUser

似乎是什么问题?

【问题讨论】:

  • 我假设Main.Mod.do_ajax() 进行了异步调用,因此当您将变量写入控制台时,回调函数尚未执行。
  • 谢谢,伙计们。我首先认为它与范围有关,但似乎 javascript 的异步特性是问题所在。我所做的只是每秒钟跟踪一次以了解结果是否返回。感谢您的回答。

标签: javascript scope


【解决方案1】:

这是因为由于回调是异步的,因此在进行分配时尚未调用您的回调。见Ajax jquery async return valuehttp://node-tricks.com/return-response-ajax-call/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多