javascript - 同步两个 HTTP 请求

标签 javascript jquery asynchronous

我试图通过向两个 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 年的最佳实践是什么。

最佳答案

你可以使用 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();
});

关于javascript - 同步两个 HTTP 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58366878/

相关文章:

javascript - 将对象值返回给父函数

javascript - TypeError : this. state.merchentOrders.map 不是函数

javascript - 使用 Javascript 的 window.print 中的对齐问题

javascript - 专注于 jquery tokeninput 元素(Chrome 和 Opera)

javascript - 在 C# web 表单中的列表上进行 JSON stringify

javascript - 在子悬停时更改父背景

javascript - 如何从 View 重新加载部分 View ?

javascript - 如何自动将allowfullscreen添加到每个新的iframe

c - 我怎样才能订阅一个 channel ,然后在不阻塞的情况下做其他事情?

asp.net-mvc - 什么时候应该在 ASP.NET MVC 中使用异步 Controller ?