Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在post请求完成之前执行$.post()之后的代码_Javascript_Jquery_Post_Console - Fatal编程技术网

Javascript 在post请求完成之前执行$.post()之后的代码

Javascript 在post请求完成之前执行$.post()之后的代码,javascript,jquery,post,console,Javascript,Jquery,Post,Console,我试图使用post请求jQuery的$.post从服务器获取数据,并将其分配给JavaScript变量 代码如下: function getData() { var zones = DUMMY_zones; var workers = []; console.log("1"); $.post('server/main.php', {info: 'req_workers'}, function(result) { var resu

我试图使用post请求jQuery的$.post从服务器获取数据,并将其分配给JavaScript变量

代码如下:

function getData() {        
    var zones = DUMMY_zones;
    var workers = [];

    console.log("1");

    $.post('server/main.php', {info: 'req_workers'}, function(result) {
        var result = JSON.parse(result);

        console.log("2");

    });


    console.log("3");
    return [zones, workers];
}
然而奇怪的是,返回是在$.post请求找到之前执行的,因此workers是未定义的变量。控制台输出如下所示:

ppe_c_js.js:82 1
ppe_c_js.js:90 3
ppe_c_js.js:85 2
如何按顺序执行代码


谢谢大家!

您可以使jquery post同步。但这是一种糟糕的做法。因此,在操作过程中,浏览器将处于冻结状态

$.ajax{ 键入:“POST”, url:url, 数据:数据, 成功:成功, 数据类型:数据类型, 异步:false
};异步代码就是这样做的。它发送请求并继续执行其余代码。在将来的某个时候,post返回后,调用回调并打印2。我明白了!但由于这是一种不好的做法,如何确保在使用之前设置了workers变量?否则,我将面临变量为空的问题。在同步操作中,代码按顺序运行。所以,定义和设置之后,workers变量值将随处可用。您可以将其放在控制台2旁边。如果你有一个更复杂的设置,你可以使用承诺