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

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

jQuery AJAX調(diào)用for循環(huán)

jQuery AJAX調(diào)用for循環(huán)

浮云間 2019-12-02 13:51:51
我是AJAX的新手,并且正在編寫一個用戶腳本,該腳本將處理頁面上的一堆鏈接并為每個鏈接進行AJAX調(diào)用。for (var i = 0; i < linkList.length; i++){    $.ajax({        url: linkList[i].getAttribute("href"),        cache: false    }).done(function( html )    {        var hasAppended = false;        if (html.indexOf('someStringOnGottenPage') != -1 && !hasAppended)        {            hasAppended = true;            var id = linkList[i].getAttribute("href").substring(linkList[i].getAttribute("href").indexOf('='));            $( "#links a[href*='" + id + "']" ).append(' THIS PAGE CONTAINS SPECIFIED DATA');        }    });}簡單地說,我有一個包含鏈接列表的頁面。我希望遍歷鏈接并獲取AJAX來處理每個鏈接頁面的內(nèi)容,并報告該頁面是否包含指定內(nèi)容。我遇到的問題是用于遍歷linkList的[i]的值始終為6,應該永遠不會。我假設我需要傳遞一些數(shù)據(jù),以便當.done最終觸發(fā)時,它從AJAX首次觸發(fā)時知道其[i]值,而在.done之后觸發(fā)時則不知道[i]的值。在首次調(diào)用AJAX時,如何確保.done知道[i]值?
查看完整描述

2 回答

?
溫溫醬

TA貢獻1752條經(jīng)驗 獲得超4個贊

最簡單的方法是使用閉包。每當循環(huán)中有異步的東西時,它都是一樣的。


for (var i .....) {

  asynchronousFunction(function() {

    use(i);

  }

}

在此偽代碼段中,內(nèi)部函數(shù)捕獲引用的存儲位置i。循環(huán)運行,i遞增到其最終值,然后開始調(diào)用異步回調(diào),所有這些回調(diào)都查找完全相同的位置(而不是值)。


通用解決方案是這樣的:


for (var i .....) {

  (function (i) {

    asynchronousFunction(function() {

      use(i);

    });

  })(i);

}

即將循環(huán)的全部內(nèi)容包裝在一個自執(zhí)行函數(shù)中。


這里,值外的i被傳遞到包裝自執(zhí)行匿名函數(shù); 這個唯一值的位置被異步回調(diào)捕獲。這樣,每個異步都會獲得自己的值,該值是在調(diào)用自執(zhí)行函數(shù)時確定的。


查看完整回答
反對 回復 2019-12-02
  • 2 回答
  • 0 關注
  • 983 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號