为了账号安全,请及时绑定邮箱和手机立即绑定

同步两个 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 关注
  • 117 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信