jQuery: fadeOut() asynchronous behavior
up vote
0
down vote
favorite
$("button").on("click", function(){
$("div").fadeOut(1000);
console.log("Fade Completed");
});
When above code is executed, "Fade Completed" is logged on the console way before the div has actually faded out.
As per my knowledge, Javascript is single threaded. It executes code line by line. So why is "Fade Completed" logged on first before the div has faded out completely?
Is the above code utilizing asynchronous nature of javascript (i.e parallel browser engines can run alongside the JS Engine)? But had that been the case, the div would have started fading out after clearance of execution stack. So that's not the case as per my understanding.
Kindly elaborate on this behavior.
javascript jquery
add a comment |
up vote
0
down vote
favorite
$("button").on("click", function(){
$("div").fadeOut(1000);
console.log("Fade Completed");
});
When above code is executed, "Fade Completed" is logged on the console way before the div has actually faded out.
As per my knowledge, Javascript is single threaded. It executes code line by line. So why is "Fade Completed" logged on first before the div has faded out completely?
Is the above code utilizing asynchronous nature of javascript (i.e parallel browser engines can run alongside the JS Engine)? But had that been the case, the div would have started fading out after clearance of execution stack. So that's not the case as per my understanding.
Kindly elaborate on this behavior.
javascript jquery
add a comment |
up vote
0
down vote
favorite
up vote
0
down vote
favorite
$("button").on("click", function(){
$("div").fadeOut(1000);
console.log("Fade Completed");
});
When above code is executed, "Fade Completed" is logged on the console way before the div has actually faded out.
As per my knowledge, Javascript is single threaded. It executes code line by line. So why is "Fade Completed" logged on first before the div has faded out completely?
Is the above code utilizing asynchronous nature of javascript (i.e parallel browser engines can run alongside the JS Engine)? But had that been the case, the div would have started fading out after clearance of execution stack. So that's not the case as per my understanding.
Kindly elaborate on this behavior.
javascript jquery
$("button").on("click", function(){
$("div").fadeOut(1000);
console.log("Fade Completed");
});
When above code is executed, "Fade Completed" is logged on the console way before the div has actually faded out.
As per my knowledge, Javascript is single threaded. It executes code line by line. So why is "Fade Completed" logged on first before the div has faded out completely?
Is the above code utilizing asynchronous nature of javascript (i.e parallel browser engines can run alongside the JS Engine)? But had that been the case, the div would have started fading out after clearance of execution stack. So that's not the case as per my understanding.
Kindly elaborate on this behavior.
javascript jquery
javascript jquery
asked Nov 11 at 10:02
Himansh
325
325
add a comment |
add a comment |
3 Answers
3
active
oldest
votes
up vote
1
down vote
As you can read in the docs http://api.jquery.com/fadeOut/ the function is executed asynchronously and you can wait for it finish by using the 'complete' callback
add a comment |
up vote
1
down vote
You have to log in a callback function
$("button").on("click", function(){
$("div").fadeOut(1000, function(){
console.log("Fade Completed");
});
});
add a comment |
up vote
0
down vote
You have partially answered your question. You are right Javascript is single threaded and executes code line by line in a synchronous way. That's why "Fade completed" is logged out before the animation has actually completed.
If you want to wait for the animation to complete before executing a code you should provide a callback as a second argument to fadeOut
. This callback will be executed after the animation has completed.
"Callbacks" are a way to implement asynchronocity in Javascript. You can read more here Javascript Asynchronous Programming and Callbacks
add a comment |
3 Answers
3
active
oldest
votes
3 Answers
3
active
oldest
votes
active
oldest
votes
active
oldest
votes
up vote
1
down vote
As you can read in the docs http://api.jquery.com/fadeOut/ the function is executed asynchronously and you can wait for it finish by using the 'complete' callback
add a comment |
up vote
1
down vote
As you can read in the docs http://api.jquery.com/fadeOut/ the function is executed asynchronously and you can wait for it finish by using the 'complete' callback
add a comment |
up vote
1
down vote
up vote
1
down vote
As you can read in the docs http://api.jquery.com/fadeOut/ the function is executed asynchronously and you can wait for it finish by using the 'complete' callback
As you can read in the docs http://api.jquery.com/fadeOut/ the function is executed asynchronously and you can wait for it finish by using the 'complete' callback
answered Nov 11 at 10:11
NielsNet
38818
38818
add a comment |
add a comment |
up vote
1
down vote
You have to log in a callback function
$("button").on("click", function(){
$("div").fadeOut(1000, function(){
console.log("Fade Completed");
});
});
add a comment |
up vote
1
down vote
You have to log in a callback function
$("button").on("click", function(){
$("div").fadeOut(1000, function(){
console.log("Fade Completed");
});
});
add a comment |
up vote
1
down vote
up vote
1
down vote
You have to log in a callback function
$("button").on("click", function(){
$("div").fadeOut(1000, function(){
console.log("Fade Completed");
});
});
You have to log in a callback function
$("button").on("click", function(){
$("div").fadeOut(1000, function(){
console.log("Fade Completed");
});
});
answered Nov 11 at 10:15
Ouatataz
9618
9618
add a comment |
add a comment |
up vote
0
down vote
You have partially answered your question. You are right Javascript is single threaded and executes code line by line in a synchronous way. That's why "Fade completed" is logged out before the animation has actually completed.
If you want to wait for the animation to complete before executing a code you should provide a callback as a second argument to fadeOut
. This callback will be executed after the animation has completed.
"Callbacks" are a way to implement asynchronocity in Javascript. You can read more here Javascript Asynchronous Programming and Callbacks
add a comment |
up vote
0
down vote
You have partially answered your question. You are right Javascript is single threaded and executes code line by line in a synchronous way. That's why "Fade completed" is logged out before the animation has actually completed.
If you want to wait for the animation to complete before executing a code you should provide a callback as a second argument to fadeOut
. This callback will be executed after the animation has completed.
"Callbacks" are a way to implement asynchronocity in Javascript. You can read more here Javascript Asynchronous Programming and Callbacks
add a comment |
up vote
0
down vote
up vote
0
down vote
You have partially answered your question. You are right Javascript is single threaded and executes code line by line in a synchronous way. That's why "Fade completed" is logged out before the animation has actually completed.
If you want to wait for the animation to complete before executing a code you should provide a callback as a second argument to fadeOut
. This callback will be executed after the animation has completed.
"Callbacks" are a way to implement asynchronocity in Javascript. You can read more here Javascript Asynchronous Programming and Callbacks
You have partially answered your question. You are right Javascript is single threaded and executes code line by line in a synchronous way. That's why "Fade completed" is logged out before the animation has actually completed.
If you want to wait for the animation to complete before executing a code you should provide a callback as a second argument to fadeOut
. This callback will be executed after the animation has completed.
"Callbacks" are a way to implement asynchronocity in Javascript. You can read more here Javascript Asynchronous Programming and Callbacks
answered Nov 11 at 10:57
Stundji
356211
356211
add a comment |
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Some of your past answers have not been well-received, and you're in danger of being blocked from answering.
Please pay close attention to the following guidance:
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53247612%2fjquery-fadeout-asynchronous-behavior%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown