第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

如何利用異步XMLHttpRequest的回調(diào)函數(shù)?

如何利用異步XMLHttpRequest的回調(diào)函數(shù)?

不負(fù)相思意 2019-11-13 15:57:19
我目前正在編寫JavaScript,并對(duì)callback感到困惑。我發(fā)現(xiàn)它不是內(nèi)置函數(shù)...我現(xiàn)在正在閱讀O'Relly JavaScript第5版,它顯示了示例代碼,如下所示:getText = function(url, callback) // How can I use this callback?{    var request = new XMLHttpRequest();    request.onreadystatechange = function()    {        if (request.readyState == 4 && request.status == 200)        {            callback(request.responseText); // Another callback here        }    }    request.open('GET', url);    request.send();}基本上,我想我不了解callback…… 的總體思路。有人可以編寫一個(gè)示例代碼來利用callback以上內(nèi)容嗎?
查看完整描述

3 回答

?
qq_遁去的一_1

TA貢獻(xiàn)1725條經(jīng)驗(yàn) 獲得超8個(gè)贊

回調(diào)非常簡(jiǎn)單又漂亮!由于AJAX調(diào)用的性質(zhì),您不會(huì)阻塞腳本的執(zhí)行,直到您的請(qǐng)求結(jié)束(然后它將是同步的)?;卣{(diào)只是一種指定用于在響應(yīng)返回到您的方法后處理響應(yīng)的方法。


由于javascript方法是一流的對(duì)象,因此可以像變量一樣傳遞它們。


所以在你的例子中


getText = function(url, callback) // How can I use this callback?

{

    var request = new XMLHttpRequest();

    request.onreadystatechange = function()

    {

        if (request.readyState == 4 && request.status == 200)

        {

            callback(request.responseText); // Another callback here

        }

    }; 

    request.open('GET', url);

    request.send();

}


function mycallback(data) {

   alert(data);

}


getText('somephpfile.php', mycallback); //passing mycallback as a method

如果執(zhí)行上述操作,則意味著您mycallback作為處理響應(yīng)(回調(diào))的方法傳遞。


編輯


盡管此處的示例并未說明回調(diào)的適當(dāng)好處(畢竟您可以簡(jiǎn)單地將警報(bào)放在onReadyStateChange函數(shù)中?。?,但是重用性無疑是一個(gè)因素。


您必須記住,這里重要的是JS方法是一流的對(duì)象。這意味著您可以像傳遞對(duì)象一樣傳遞它們并將它們附加到各種事件上。事件觸發(fā)時(shí),將調(diào)用附加到這些事件的方法。


當(dāng)您執(zhí)行此操作時(shí),request.onreadystatechange = function(){}您只是在觸發(fā)適當(dāng)?shù)氖录r(shí)分配要調(diào)用的方法。


因此,這里很酷的事情是這些方法可以重用。假設(shè)您有一個(gè)錯(cuò)誤處理方法,當(dāng)AJAX請(qǐng)求中為404時(shí),該方法會(huì)彈出警報(bào)并填充HTML頁面中的某些字段。


如果您無法分配回調(diào)或?qū)⒎椒ㄗ鳛閰?shù)傳遞,則必須一遍又一遍地編寫錯(cuò)誤處理代碼,而要做的只是將其分配為回調(diào),所有錯(cuò)誤處理將被排序一氣呵成。


查看完整回答
反對(duì) 回復(fù) 2019-11-13
  • 3 回答
  • 0 關(guān)注
  • 1959 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)