<b id="wionh"></b>

<u id="wionh"><address id="wionh"><meter id="wionh"></meter></address></u>

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

中文无码妇乱子二区三区_久久亚洲精品无码福利播放_毛片一级_日韩aⅴ无码久久精品免费

<b id="wionh"></b>

<u id="wionh"><address id="wionh"><meter id="wionh"></meter></address></u>

<