亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

請求多并發

發布時間:2020-08-14 02:06:30 來源:網絡 閱讀:3126 作者:xiedrsz 欄目:開發技術

    有的時候同一個頁面被可能同時產生多個ajax請求,為了用戶體驗,最好是發送并行請求,這就產生了并發問題,應該如何處理?

   并行改串行

這種方法是最簡單的了,就是在一個請求執行完后在執行另一個請求。代碼如下:

 1)在回調中執行下一請求
    functionasync1() {
      //do sth...
      async2();
    }
    
    functionasync2() {
      //do sth...
    }
    
    async1();
 2)將 ajax 改為同步,按順序執行
    var url1,url2;
    
    $.ajax({
      url: url1,
      async: false
    });
    
    $.ajax({
      url: url2,
      async: false
    });

很顯然,這種方法會需要比較長的等待時間,用戶體驗不是很好。

   使用計數器

就是使用一個標志位標記請求是否已經完成

 1)循環非阻塞

這種方法會影響性能,盡量少用:

    var cnt =0;
    
    functionasync1() {
      //do sth...
      cnt++;
    }
    
    function async2() {
      //do sth...
      cnt++;
    }
    
    async1();
    async2();
    
    var interval = setInterval(function(){
      if (2 === cnt) {
        console.log('已執行完成');
        clearInterval(interval)
      }
    }, 0);
 2) 回調計數
    var cnt = 0;

    function async1() {
      //do sth...
      callback();
    }
    
    function async2() {
      //do sth...
      callback();
    }
    
    function callback() {
      cnt++;
      if (2 == cnt)
        console.log('都已執行完畢');
    }
    
    async1();
    async2();

   第三方框架實現

若使用第三方框架實現,則要看第三方的相關文檔:

 1jquery
    var d1 =$.Deferred();
    var d2 =$.Deferred();

    functionasync1() {
      d1.resolve("Fish");
    }

    functionasync2() {
      d2.resolve("Pizza");
    }

    async1();
    async2();

    $.when(d1,d2).done(function(v1, v2) {
      console.log(v1 + v2 + '已完成');
    });
 2axios
    //下面是關于同時發起多個請求時的處理
    axios.all([get1(),get2()])
      .then(axios.spread(function(res1,res2) {
        // 只有兩個請求都完成才會成功,否則會被catch捕獲
      }));

         還有很多框架都可以,比如Angular$wacth等等

ES6來實現

使用ES6中的promiseasynawait等應該都可以實現,由于本人尚未使用過,暫時不講,到時候再補充。


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

蓬莱市| 城步| 灯塔市| 竹山县| 许昌县| 增城市| 恩平市| 临泉县| 哈巴河县| 永州市| 塘沽区| 长泰县| 扎鲁特旗| 修文县| 洪洞县| 沁阳市| 仁化县| 防城港市| 临汾市| 清徐县| 南宫市| 临朐县| 北辰区| 澄城县| 牟定县| 台中市| 山丹县| 临高县| 灌阳县| 林西县| 恭城| 柳州市| 和平区| 岑溪市| 卢湾区| 怀安县| 江西省| 贡觉县| 天镇县| 西乌珠穆沁旗| 益阳市|