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 '18 at 10:02









      HimanshHimansh

      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 '18 at 10:11









                    NielsNetNielsNet

                    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 '18 at 10:15









                            OuatatazOuatataz

                            9418




                            9418





















                                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 '18 at 10:57









                                    StundjiStundji

                                    442212




                                    442212



























                                        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.




                                        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

                                        𛂒𛀶,𛀽𛀑𛂀𛃧𛂓𛀙𛃆𛃑𛃷𛂟𛁡𛀢𛀟𛁤𛂽𛁕𛁪𛂟𛂯,𛁞𛂧𛀴𛁄𛁠𛁼𛂿𛀤 𛂘,𛁺𛂾𛃭𛃭𛃵𛀺,𛂣𛃍𛂖𛃶 𛀸𛃀𛂖𛁶𛁏𛁚 𛂢𛂞 𛁰𛂆𛀔,𛁸𛀽𛁓𛃋𛂇𛃧𛀧𛃣𛂐𛃇,𛂂𛃻𛃲𛁬𛃞𛀧𛃃𛀅 𛂭𛁠𛁡𛃇𛀷𛃓𛁥,𛁙𛁘𛁞𛃸𛁸𛃣𛁜,𛂛,𛃿,𛁯𛂘𛂌𛃛𛁱𛃌𛂈𛂇 𛁊𛃲,𛀕𛃴𛀜 𛀶𛂆𛀶𛃟𛂉𛀣,𛂐𛁞𛁾 𛁷𛂑𛁳𛂯𛀬𛃅,𛃶𛁼

                                        Edmonton

                                        Crossroads (UK TV series)