<noframes id="7xbfr"><pre id="7xbfr"><output id="7xbfr"></output></pre>

      <big id="7xbfr"><font id="7xbfr"><listing id="7xbfr"></listing></font></big>
        <p id="7xbfr"></p>
        <menuitem id="7xbfr"></menuitem>

          <video id="7xbfr"><mark id="7xbfr"><listing id="7xbfr"></listing></mark></video>
            <form id="7xbfr"></form>

          <delect id="7xbfr"><var id="7xbfr"></var></delect>

          js中的callback是什么, 有什么作用呢?

          時間:2021-09-14 11:10:00 類型:JS/JQUERY
          字號:    

            一個函數的作用是完成某一部分的任務,

            一個十分耗時的任務,可以讓程序等待這個任務執行完成,獲得返回值然后程序繼續執行,這種叫做同步執行。也可讓后臺默默的先接收下這個任務,當前的程序繼續往下執行,等后臺執行完成這個任務,通過某種方式把處理結果發送給當前的程序,這種叫做異步執行。通信的方式可以是信號量,事件,回調,輪詢等。比如一個 Ajax任務需要 10s 鐘:

          var data = syncAjax(URL); // 同步Ajax
          console.log('sync return !');
          
          asyncAjax(URL/*其他必要的參數,暫略*/);
          console.log('async return !')

            同步的方式執行syncAjax 直到 10s 之后這句才會執行完成,把 Ajax 的數據賦值給data。所以10s 之后才會執行 console.log('sync return !');。這種方式在 JS 不太好,因為JS是單線程,一直在這里等待 10s ,那么將會后很長時間整個瀏覽器沒有響應,所以不可取。當然 nodejs 里面也提供了很多同步的函數。

            對于異步執行的asyncAjax,這一句立即執行完畢,所以會立即輸出console.log('async return !'),可是由于Ajax 還沒有完成,所以不能把ajax 的數據返回給當前執行的程序(因為系統還沒有獲得服務器發送回來的值)。等到服務器返回數據了,需要用某種方式通知當前的程序,回調函數就是一種。比如

          function processData(data){}
          asyncAjax(URL,processData);
          console.log('async return !')

            當后臺獲得Ajax的數據data,系統調用回調函數processData,其中第一個參數是服務器返回的數據data,這樣當前的程序就可以通過processData處理 ajax 返回的數據了。


          注意: 這里的processData做為asnycAjax的參數, 那么 processData就是回調函數

          黄网站免费 <