相关疑难解决方法(0)

我应该如何调用3个函数来一个接一个地执行它们?

如果我需要一个接一个地调用这个函数,

$('#art1').animate({'width':'1000px'},1000);        
$('#art2').animate({'width':'1000px'},1000);        
$('#art3').animate({'width':'1000px'},1000);        
Run Code Online (Sandbox Code Playgroud)

我知道在jQuery中我可以做类似的事情:

$('#art1').animate({'width':'1000px'},1000,'linear',function(){
    $('#art2').animate({'width':'1000px'},1000,'linear',function(){
        $('#art3').animate({'width':'1000px'},1000);        
    });        
});        
Run Code Online (Sandbox Code Playgroud)

但是,我们假设我没有使用jQuery而且我想调用:

some_3secs_function(some_value);        
some_5secs_function(some_value);        
some_8secs_function(some_value);        
Run Code Online (Sandbox Code Playgroud)

我应该如何调用这个函数来执行some_3secs_function,然后在该调用结束后,然后执行some_5secs_function并在该调用结束后再调用some_8secs_function

更新:

这仍然无效:

(function(callback){
    $('#art1').animate({'width':'1000px'},1000);
    callback();
})((function(callback2){
    $('#art2').animate({'width':'1000px'},1000);
    callback2();
})(function(){
    $('#art3').animate({'width':'1000px'},1000);
}));
Run Code Online (Sandbox Code Playgroud)

三个动画同时开始

我的错误在哪里

javascript closures asynchronous callback

138
推荐指数
5
解决办法
24万
查看次数

Javascript线程处理和竞争条件

让我们知道我有如下代码:

var shared = 100;
function workWithIt(){
    shared += 100;
}

setTimeout(workWithIt, 500);
setTimeout(workWithIt, 500);
Run Code Online (Sandbox Code Playgroud)

理想情况下,这段代码应该为变量添加200 shared,之后为300.

但是,正如我所知c,如果将操作+ =拆分为多个命令,可能会产生一些影响.

可以说,这是函数的执行顺序:

setTimeout() --> create Thread A
setTimeout() --> create Thread B
wait 500ms

      **Thread A**              |        **Thread B**
--------------------------------+---------------------------------
var tmpA = shared;  //100       |
                                |   var tmpB = shared; //100
                                |   tmpB = tmpB+100;   //tmpB=200
                                |   shared = tmpB;
tmpA = tmpA+100;    //tmpA=200  |
shared = tmpA;                  |
Run Code Online (Sandbox Code Playgroud)

在这种情况下,shared现在值为200.

这可能发生在许多编程语言中,如c,c ++,java,c#,...... - 但是它也可以在Javascript中发生吗?

或者更一般地说:Javascript如何处理其线程,何时在线程之间切换,是否有内置方法,可用于处理竞争条件?

javascript multithreading synchronization thread-safety race-condition

4
推荐指数
1
解决办法
2971
查看次数