jQuery: fadeOut() asynchronous behavior










0














$("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.










share|improve this question


























    0














    $("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.










    share|improve this question
























      0












      0








      0







      $("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.










      share|improve this question













      $("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






      share|improve this question













      share|improve this question











      share|improve this question




      share|improve this question










      asked Nov 11 at 10:02









      Himansh

      325




      325






















          3 Answers
          3






          active

          oldest

          votes


















          1














          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






          share|improve this answer




























            1














            You have to log in a callback function



            $("button").on("click", function()
            $("div").fadeOut(1000, function()
            console.log("Fade Completed");
            );
            );





            share|improve this answer




























              0














              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






              share|improve this answer




















                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
                );



                );













                draft saved

                draft discarded


















                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









                1














                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






                share|improve this answer

























                  1














                  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






                  share|improve this answer























                    1












                    1








                    1






                    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






                    share|improve this answer












                    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







                    share|improve this answer












                    share|improve this answer



                    share|improve this answer










                    answered Nov 11 at 10:11









                    NielsNet

                    38818




                    38818























                        1














                        You have to log in a callback function



                        $("button").on("click", function()
                        $("div").fadeOut(1000, function()
                        console.log("Fade Completed");
                        );
                        );





                        share|improve this answer

























                          1














                          You have to log in a callback function



                          $("button").on("click", function()
                          $("div").fadeOut(1000, function()
                          console.log("Fade Completed");
                          );
                          );





                          share|improve this answer























                            1












                            1








                            1






                            You have to log in a callback function



                            $("button").on("click", function()
                            $("div").fadeOut(1000, function()
                            console.log("Fade Completed");
                            );
                            );





                            share|improve this answer












                            You have to log in a callback function



                            $("button").on("click", function()
                            $("div").fadeOut(1000, function()
                            console.log("Fade Completed");
                            );
                            );






                            share|improve this answer












                            share|improve this answer



                            share|improve this answer










                            answered Nov 11 at 10:15









                            Ouatataz

                            9618




                            9618





















                                0














                                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






                                share|improve this answer

























                                  0














                                  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






                                  share|improve this answer























                                    0












                                    0








                                    0






                                    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






                                    share|improve this answer












                                    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







                                    share|improve this answer












                                    share|improve this answer



                                    share|improve this answer










                                    answered Nov 11 at 10:57









                                    Stundji

                                    421212




                                    421212



























                                        draft saved

                                        draft discarded
















































                                        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.




                                        draft saved


                                        draft discarded














                                        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





















































                                        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







                                        Popular posts from this blog

                                        Kleinkühnau

                                        Makov (Slowakei)

                                        Deutsches Schauspielhaus