使用Ajax的JavaScript代码中的求值顺序?

使用Ajax的JavaScript代码中的求值顺序?,javascript,ajax,asynchronous,callback,Javascript,Ajax,Asynchronous,Callback,在我看来,javascript语句并不总是一个接一个地运行。我知道他们是这样做的,但有时似乎show()函数与hide()同时启动,因此逻辑失败。有一些回调函数可以使用,比如jQuery.load(“some.html”,然后运行这个) 我需要理解工作逻辑。有什么帮助/线索吗 thx-prevend回调很好,因为它们可以防止浏览器在工作时锁定和无法使用。它允许浏览器仍然可用,然后在前一件事情完成时继续处理JavaScript,因为它是异步处理工作的 jQuery.load("some.html"

在我看来,javascript语句并不总是一个接一个地运行。我知道他们是这样做的,但有时似乎show()函数与hide()同时启动,因此逻辑失败。有一些回调函数可以使用,比如jQuery.load(“some.html”,然后运行这个)

我需要理解工作逻辑。有什么帮助/线索吗


thx-prevend

回调很好,因为它们可以防止浏览器在工作时锁定和无法使用。它允许浏览器仍然可用,然后在前一件事情完成时继续处理JavaScript,因为它是异步处理工作的

jQuery.load("some.html",thenrunthis);

如果
thenrunthis
不存在,并且加载
some.html
花费了一段时间,用户在完成加载之前无法使用浏览器,

回调函数通常与异步事件关联,jQuery.load就是一个很好的例子

当您调用这样一个函数时,调用它的结果不是立即可用的,即使控制几乎可以立即返回到调用代码。提供回调函数的目的是说-'去做这个操作,完成后,运行这段代码来处理结果。与此同时,我会去做别的事情


这有意义吗?

有些函数具有回调,因为它们是异步的

情景。在javascript中,您希望从另一个html页面获取内容。您调用该页面,但服务器速度非常慢。是否希望javascript方法调用在该点挂起,从而阻止进一步执行?回答,不。这对用户来说不是一件很好的事情

输入异步方法调用。当您调用第x页时,脚本不会等待该页返回,而是继续。这可以防止用户浏览器锁定。然而,给出了一个回调方法,以便当数据确实返回时,可以对其进行操作。这使得页面不会被潜在的长操作阻塞


有意义吗?

你真的是在问关于“A”的问题。它代表异步,并且允许您在没有任何限制的情况下发出请求。如果/当请求成功时,将执行回调函数,但其余代码将继续执行。这种方法的主要优点之一是UI响应性。同步调用实际上会冻结浏览器,直到您的请求返回,这可能需要一段时间

编辑:为了对我的原始答案进行一点扩展,我想我应该指出回调函数并不局限于AJAX请求。由于您似乎正在使用jQuery,因此可能需要查看更多使用回调的示例

示例:假设您希望在文本输入字段获得焦点时以某种方式进行响应。下面是一个直接来自的示例,其中回调函数用于响应
输入
元素获得焦点:

$("input").focus(function () {
     $(this).next("span").css('display','inline').fadeOut(1000);
});

这个函数实际上是一个回调函数。当用户选择页面上的
input
元素时,将调用它。上面的代码有一个有效的演示。

回调在javascript中使用,任何语言都可以告诉代码在给定事件发生时做什么。它有助于防止将所有代码耦合成一团


请参阅条目。

理论上,根本不能保证在页面完全加载后执行javascript语句。线程浏览器可以选择在呈现HTML时执行javascript


回调是一种同步调用javascript语句的方法。它们确保在某些事件(如“页面已完全加载”)之后,代码以预定义的顺序执行。

您的语句不是真的。回调不会“防止浏览器在工作时锁定和不可用”。只有AJAX功能是异步的。当原始方法完成时,任何其他回调都会被简单地调用。“如果thenrunthis不存在,并且加载some.html需要一段时间,则用户在加载完成之前无法使用浏览器”不一定正确-浏览器仍然可用,但是javascript无法对加载操作的完成做出反应。我还应该说,我意识到回调函数的使用有很多原因,而不是AJAX请求,但是OP似乎特别询问
jQuery.load
。这就是为什么我在AJAX请求的上下文中构建了我的答案。您可能想强调OP的这一特定方面,即AJAX上下文中使用的回调与其他上下文中使用的回调之间的差异+1.otherwise@Ionut当前位置实际上我认为原来的问题标题更好。“评估顺序”这句话有点误导人。@William,可能吧。当然,你可以编辑它,毕竟你给出了最合适的答案。这是我能想到的最好的了。谢谢。。实际上不知道该怎么称呼它。:)