我正在尝试通过单个回调获取多个并行请求,就像jQuery“ when”
$.when(ajax1, ajax2).done(callback)
我不想在ajax1完成之后调用第二个ajax调用,我希望同时请求ajax2和ajax2,而不是同时完成时回调。
我正在寻找普通的javascript而不是jQuery来实现这种实现。
答案 0 :(得分:1)
使用一种方法发出将返回promise的请求。
这可能只是使用the fetch api或wrapping 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
});