Javascript 范围和$.get

Javascript 范围和$.get,javascript,jquery,Javascript,Jquery,这可能是一个愚蠢的问题,但我不明白为什么things变量没有被重置。以下是我所拥有的: var things = ""; jQuery.get("/Users/MyName/Documents/File.txt", function(data) { things = data; }); console.log(things) 每当我在函数中执行控制台日志时,它都会工作。当我把它从函数中取出时,它就不工作了。我以为我是在设置全局变量,但显然不是

这可能是一个愚蠢的问题,但我不明白为什么things变量没有被重置。以下是我所拥有的:

var things = "";

    jQuery.get("/Users/MyName/Documents/File.txt", function(data) {

        things = data;

      });

    console.log(things)
每当我在函数中执行控制台日志时,它都会工作。当我把它从函数中取出时,它就不工作了。我以为我是在设置全局变量,但显然不是

var things = "";

    jQuery.get("/Users/MyName/Documents/File.txt", function(data) {

        things = data;

      }).done(function() {
       console.log(things);
      });

var things = "";

    jQuery.get("/Users/MyName/Documents/File.txt", function(data) {

        things = data;
         console.log(things);
      });
将函数作为第二个参数传递到
$.get
,当AJAX请求成功时(aka status=200)将调用该函数


如果您想在外部使用它,您必须使用
done()
方法,如果成功,则调用第一个参数(函数),如果出错,则调用第二个参数,而第三个参数始终是。

AJAX是异步的(这就是第一个a所代表的)。您的
console.log()
在请求返回之前运行。get是一个回调函数。所以当ajax请求返回时调用它。同时代码还在继续,console.log已经被触发了,非常感谢!“那么,我该如何完成这件事呢?有没有办法让我等着它完成呢?”杰克从技术上说是的,但你不想这么做。