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

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

同步兩個 HTTP 請求

同步兩個 HTTP 請求

鳳凰求蠱 2021-11-18 20:58:14
我試圖通過向兩個 API 端點發出 HTTP 請求來在頁面上呈現一些元素。當兩個調用都返回時,我想調用第三個函數。出于性能原因,我不想鏈接兩個 API 端點調用。這是我的最小示例:$(document).ready(function () {    $.get({        url: `/api/one`,        success: function (response) {            callback_one(response);        }    });    $.get({        url: `/api/two`,        success: function (response) {            callback_two(response);        }    });    // want to call callback_three() after both of the above requests have completed.});我該如何正確地做到這一點?我讀過 Promises、async/await、Deferred 等,但我不確定 2019 年的最佳實踐是什么。
查看完整描述

3 回答

?
交互式愛情

TA貢獻1712條經驗 獲得超3個贊

您可以使用Promise.all并執行以下操作。


const urlsAndCallbacks = [

   { 

    url: urlOne,

    callback: callbackOne

   },

   { 

    url: urlTwo,

    callback: callbackTwo

   },

];


Promise.all(urlsAndCallbacks.map(item =>

  $.get({

    url: item.url,

    success: function (response) {

      item.callback(response);

    }

  })

))

.then(data => {

  fetchThirdUrl();

});


查看完整回答
反對 回復 2021-11-18
?
冉冉說

TA貢獻1877條經驗 獲得超1個贊

另一種方法是使用 jQuery $.when()


$.when($.get('/api/one'), $.get('/api/two')).done(function(res1, res2) {

  callback_one(res1);

  callback_two(res2);

  callback_three();

});


查看完整回答
反對 回復 2021-11-18
?
千巷貓影

TA貢獻1829條經驗 獲得超7個贊

您可以調用一個并在承諾中創建一個調用另一個的函數


查看完整回答
反對 回復 2021-11-18
  • 3 回答
  • 0 關注
  • 156 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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