没有jQuery的并行AJAX请求

时间:2019-05-17 12:18:24

标签: javascript ajax http xmlhttprequest

我正在尝试通过单个回调获取多个并行请求,就像jQuery“ when”

$.when(ajax1, ajax2).done(callback)

我不想在ajax1完成之后调用第二个ajax调用,我希望同时请求ajax2和ajax2,而不是同时完成时回调。

我正在寻找普通的javascript而不是jQuery来实现这种实现。

3 个答案:

答案 0 :(得分:1)

使用一种方法发出将返回promise的请求。

这可能只是使用the fetch apiwrapping XMLHttpRequest with a promise

将两个promise放入数组中,然后将其传递给Promise.all

Promise.all([ fetch("http://example.com"), fetch("http://example.net") ])
    .then(array => console.log(array));

答案 1 :(得分:0)

您还可以对Promise.all使用async / await来实现:

async function getAll() {
  // waits untill all resposnes are resolved
  const data = await Promise.all([
    fetch('https://jsonplaceholder.typicode.com/todos/1').then(response =>
      response.json()
    ),
    fetch('https://jsonplaceholder.typicode.com/todos/2').then(response =>
      response.json()
    ),
  ]);
  // returns array of resolved data from fetch
  console.log(data);
}

getAll()

答案 2 :(得分:-1)

您可以将done替换为then方法

$.when( ajax1 , ajax2 ).then(function() {
    // success ajax1, success ajax 2
});