我可以做更多有javascript同时做两件事吗?

我有一个奇怪的需要。 我想在javascript中执行以下操作:

  1. 当一个函数被调用时我想改变DIV的颜色然后1/2秒后我想改回它
  2. 在(1)我想做一个Ajax调用的同时。 通话通常需要一秒钟

换句话说,我希望步骤1和步骤2同时开始。

我对javascript的了解非常基础。 这种事情有可能吗? 如果我使用jQuery,那会更容易吗?

您可以使用jQuery及其functionqueue来延迟操作。

我在jsFiddle上分叉了wdm的版本,将其更改为queue样式,而不是setTimeout 。 我个人认为,这是一种更清洁,更好的方式来实现您的目标。

这是分叉的演示

这是JavaScript代码:

 $('#change').click(function(e) { e.preventDefault(); $('#a') .css('background-color', 'blue') .delay(500) .queue(function(next){ $(this).css('background-color', 'red'); next(); }); $.ajax({}); // do the ajax call here }); 

我为你创造了第一部分。 它将颜色设置为蓝色,然后在半秒后(500毫秒)返回红色。

然后,您可以在我有注释的地方添加ajax请求的代码。 颜色更改和ajax调用将在调用函数的同时开始。

演示: http : //jsfiddle.net/wdm954/H39XZ/1/

 $('#change').click(function(e) { e.preventDefault(); $('#a').css('background-color', 'blue'); setTimeout(function() { $('#a').css('background-color', 'red'); }, 500); // Insert ajax call here }); 

一个重要的概念是javascript是一个单线程的东西。 只有一件事真的发生,没有并行任务。

这是一个很好的教程 ,可以详细了解这一点。

现在,这并不意味着javascript执行似乎是最终用户的单线程。 你有很多工具可以使用异步ajax调用和基于计时器的事件(比如动画中使用的jQuery队列),这些工具会使javascript作业中断。 这意味着一些工作将逐步完成,对于几个图形区域,您将获得最终的印象,他们并行完成。

这就是为什么@Shef的答案是对的,以及@ anirudh4444的答案。

AJAX的目的是进行异步调用。 如果希望它们稍后执行,可以使用setTimeout()setInterval()执行函数。