突发控制多个ajax请求

时间:2018-01-24 21:44:36

标签: javascript jquery

我有一个使用

处理的$.get个请求列表
$.when(...requests).then((...responses)=>{})

问题是API Im调用的突发速率,因此立即发送所有请求将使其中一小部分失败。

是否有一种简单的方法可以使用jquery立即发送这些请求?

1 个答案:

答案 0 :(得分:0)

$ .get还应该返回Promise接口,这样你可以像这个例子一样链接它们:

var urls = ["url1", "url2", "url3"];
var responses = [];

/*---- vanilla js example for use in snippet ------- */
function fakeGet(url) {
  return new Promise(resolve => setTimeout(resolve, 1000, url + ' response'));
}

urls.reduce((chain, url) => {
  return chain.then(res => {
    res? responses.push(res) : '';
    console.log('getting: ' + url);
    return fakeGet(url);
  });
}, Promise.resolve()).then(res => {
  responses.push(res);
  console.log('Complete!\n' + responses.join("\n"));
});

/* --------------- end of vanilla snippet ---------------*/


/* ------- using jQuery $.get --------------------
urls.reduce((chain, url) => {
  return chain.then(res => {
    res? responses.push(res) : '';
    return $.get(url);
  });
}, $.when()).then(res => {
  responses.push(res);
  console.log('Complete!\n' + responses.join("\n"));
});
---------------------------------------- */