我有一个奇怪的需要。我想在javascript中执行以下操作:
换句话说,我希望步骤1和步骤2同时开始。
我对javascript的了解非常基础。这种事可能吗?如果我使用jQuery,那会更容易吗?
答案 0 :(得分:2)
我为你创造了第一部分。它将颜色设置为蓝色,然后在半秒后(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
});
答案 1 :(得分:2)
您可以使用jQuery及其函数queue
来延迟操作。
我在jsFiddle上分享了wdm的版本,将其更改为queue
样式,而不是setTimeout
。我个人认为,这是一种更清洁,更好的方式来实现您的目标。
以下是forked Demo
以下是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
});
答案 2 :(得分:0)
AJAX的目的是进行异步调用。您可以使用 setTimeout()
和 setInterval()
执行某项功能,如果您希望它们稍后执行。
答案 3 :(得分:0)
一个重要的概念是javascript是一个单线程的东西。只有一件事真的发生,没有并行任务。
这是一个nice tutorial来详细说明这一点。
现在这并不意味着javascript执行似乎对最终用户来说是单线程的。你有很多工具可以使用异步ajax调用和基于计时器的事件(比如动画中使用的jQuery队列),这些工具会使javascript作业被中断。这意味着一些工作将逐步完成,对于几个图形区域,这样你就可以得到他们并行完成的最终印象。
这就是为什么@Shef的答案是正确的,以及@ anirudh4444的答案。