jQuery: fadeOut() asynchronous behavior
$("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 |
$("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 |
$("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 '18 at 10:02
HimanshHimansh
325
325
add a comment |
add a comment |
3 Answers
3
active
oldest
votes
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 |
You have to log in a callback function
$("button").on("click", function()
$("div").fadeOut(1000, function()
console.log("Fade Completed");
);
);
add a comment |
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 |
Your Answer
StackExchange.ifUsing("editor", function ()
StackExchange.using("externalEditor", function ()
StackExchange.using("snippets", function ()
StackExchange.snippets.init();
);
);
, "code-snippets");
StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "1"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);
else
createEditor();
);
function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);
);
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
3 Answers
3
active
oldest
votes
3 Answers
3
active
oldest
votes
active
oldest
votes
active
oldest
votes
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 |
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 |
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 '18 at 10:11
NielsNetNielsNet
38818
38818
add a comment |
add a comment |
You have to log in a callback function
$("button").on("click", function()
$("div").fadeOut(1000, function()
console.log("Fade Completed");
);
);
add a comment |
You have to log in a callback function
$("button").on("click", function()
$("div").fadeOut(1000, function()
console.log("Fade Completed");
);
);
add a comment |
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 '18 at 10:15
OuatatazOuatataz
9418
9418
add a comment |
add a comment |
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 |
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 |
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 '18 at 10:57
StundjiStundji
442212
442212
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.
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