<dd id="t699n"></dd>

  • <em id="t699n"></em>

    1. <dd id="t699n"></dd>

      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就是回調函數

      黄网站免费 <