我可以做更多有javascript一次做两件事吗?

时间:2011-06-11 18:45:08

标签: javascript jquery

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

  1. 当我想要一个函数被调用时 改变DIV的颜色和 然后1/2秒后我想 改回来
  2. 同时(1)我愿意 喜欢做一个Ajax调用。电话 通常需要一秒钟
  3. 换句话说,我希望步骤1和步骤2同时开始。

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

4 个答案:

答案 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的答案。