亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

js的callback到底是什么。有什么實際應用。

js的callback到底是什么。有什么實際應用。

慕妹3146593 2018-10-04 13:18:33
rt問題如上--最好麻煩貼一下代碼
查看完整描述

1 回答

?
躍然一笑

TA貢獻1826條經驗 獲得超6個贊

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

var data = syncAjax(URL); // 同步Ajaxconsole.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的數據gdata,系統調用回調函數processData,其中第一個參數是服務器返回的數據data,這樣當前的程序就可以通過processData處理 ajax 返回的數據了。


查看完整回答
反對 回復 2018-11-26
  • 1 回答
  • 0 關注
  • 780 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號