使用Ajax在JavaScript代码中进行评估的顺序?

时间:2009-07-31 14:06:57

标签: javascript ajax asynchronous callback

似乎(对我而言)javascript语句并不总是一个接一个地运行。我知道他们这样做但有时似乎show()函数同时用hide()触发,因此逻辑失败。有一些回调函数可供使用,比如jQuery.load(“some.html”,thenrunthis)..

我需要了解工作逻辑。任何帮助/潜在客户?

事先提前

6 个答案:

答案 0 :(得分:6)

你真的在询问AJAX中的“A”。它代表异步,它允许您在没有blocking的情况下发出请求。如果/当请求成功时,将执行回调函数,但其​​余代码将继续执行。这种方法的主要优点之一是UI响应。同步调用将基本上冻结浏览器,直到您的请求返回为止,这可能需要一段时间。

编辑:为了扩展我的原始答案,我想我会指出回调函数不仅限于AJAX请求。由于您似乎正在使用jQuery,因此您可能需要查看jQuery Events API以获取更多使用回调的示例。

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

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

该函数实际上是一个回调函数。当用户在页面上选择input元素时,将调用它。上面的代码正在运行here

答案 1 :(得分:2)

回调用于javascript,以及任何语言来告诉一段代码在给定事件发生时该怎么做。它有助于防止将所有代码耦合到一个大混乱中。

请参阅wikipedia条目。

答案 2 :(得分:1)

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

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

这有意义吗?

答案 3 :(得分:1)

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

方案。在javascript中,您希望从另一个html页面获取内容。你调用那个页面但是服务器速度太慢了。您是否希望javascript方法调用在此时挂起,从而阻止进一步执行?答案,不。这对用户来说不是一件好事。

输入异步方法调用。当您调用第x页时,脚本只是继续,而不是等待它返回。这可以防止用户浏览器锁定。但是,给出了一个回调方法,以便在数据实际返回时,可以对其进行操作。这样可以避免页面被长时间的操作阻止。

有意义吗?

答案 4 :(得分:1)

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

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

答案 5 :(得分:-1)

回调很好,因为它们会阻止浏览器锁定并在工作时变得无法使用。它允许浏览器仍然可用,然后在前一个事情完成时继续处理JavaScript,因为它正在异步处理工作。

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

如果thenrunthis不存在且some.html的加载需要一段时间,则该用户无法使用浏览器直到加载完成