javascript - 使用闭包强制同步 javascript

标签 javascript

此代码挂起。

我有理由确定这是因为匿名函数中的响应是一个与外部作用域不相关的新变量。我该如何解决这个问题?

function foo() { //...

    var url = "http://urliciously-urlish-url"
    response = null;
    $.get(url, function (data) {response = data;
                               });

    while( response === null)
    {
        1;
    }
    console.log(response);

    //...
}

注意我知道这种设计将(与轮询系统一样)挂起页面,直到响应变为非空。在这种情况下这是可以的。

最佳答案

$.get 是异步的。如果您确实希望这是同步的,则必须使用$.ajax函数:

$.ajax({
    url: url,
    async: false,
    success: function(data) {
        response = data;
    }
});

话虽这么说,我同意 cHao 的观点——你应该习惯编写异步代码。

关于javascript - 使用闭包强制同步 javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10215410/

相关文章:

javascript - 如何从 AngularJS 获取变量并在 javascript 中使用它们?

javascript - 在mapbox中设置默认标记过滤器

javascript - 从函数内部添加负载栏

javascript - 使用 Jquery 创建的幻灯片在旋转 4 次后停止工作

javascript - native Javascript 类实现

javascript - 如何在jquery中使用图像id获取图像位置

javascript - 根据计数器长度添加字符串?

javascript - 每当 DIV 第一次可见时加载(延迟加载)Div

javascript - jQuery:将 div 拆分为另一个 div

javascript - 迭代表格的所有子元素并重置背景颜色