【问题标题】:accessing outer scope in jQuery callback在 jQuery 回调中访问外部范围
【发布时间】:2012-06-18 02:01:38
【问题描述】:

我有一种情况,我需要一个 jQuery 回调来处理其范围之外的变量。为简单起见,假设如下代码:

$('#myBtn').on('click', function(e) {
    var num = 1;

    // assume this returns the following:
    // { success : true, num : 1 }
    $.getJSON('/api/get_number', {}, function(response) {
        if ( response.success ) {
            // here, num is unknown unless I define it as a
            // global variable
            num += response.num ;   
        }
    });

    console.log(num); // => want 2, get 1
});

我希望 num 在回调函数中可用。在不声明全局变量(在 onclick 函数之外声明 num )的情况下,有什么好的方法可以做到这一点?有没有办法将它作为参数传递而不必从服务器发送它?谢谢。

【问题讨论】:

  • num 已成功更新,但之后您调用了console.log(num)。问题不在于范围,Ajax 是异步。在回调中移动console.log(num),你会看到。已经存在很多很多相关的问题。

标签: javascript jquery scope jquery-callback


【解决方案1】:
$('#myBtn').on('click', function(e) {
    var num = 1;

    // assume this returns the following:
    // { success : true, num : 1 }
    $.getJSON('/api/get_number', {}, function(response) {
        // get responce
        if ( response.success ) {
            // here, num is unknown unless I define it as a
            // global variable
            num += response.num ;   
            console.log(num); // you will get 2 here
        }
    });
    // responce havnt get ,you always get 1
    console.log(num); // => want 2, get 1
});

【讨论】:

    猜你喜欢
    • 2016-06-23
    • 2012-07-16
    • 2011-06-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-04
    • 2020-02-14
    • 1970-01-01
    相关资源
    最近更新 更多