限制并发HTTP通过VUE资源调用

问题描述 投票:0回答:1

我们通过VUE资源在我们的应用程序同时执行多个$http.get电话。有没有什么办法来设置限制,以便VUE资源队列的请求,并执行基于此限制的呼吁?

javascript vue.js vuejs2 vue-resource
1个回答
0
投票

我没有使用Vue的资源。

我只是换另一个承诺的承诺:

const callBackFunction = function (valueToReturn, promise) {
  pendingRequestsArr.pop();
  if (waitingRequestsArr.length > 0) {
    executeXHR(waitingRequestsArr.shift())
  }
  if (valueToReturn.body && !valueToReturn.body.hasOwnProperty('error')) {
    if (promise) promise(valueToReturn.body.content || valueToReturn.body);
    return valueToReturn.body.content || valueToReturn.body;
  }
  else
    return valueToReturn.error
};

function executeXHR(obj) {
    if (!AJAX_CONCURRENT || pendingRequestsArr.length < AJAX_CONCURRENT) {
      pendingRequestsArr.push(obj.resource(obj.data).then((response) => callBackFunction(response, obj.promise)))
    } else {
      waitingRequestsArr.push(obj);
    }
}
function wrapPromise(resource, data){
  return new Promise((resolve, reject)=>{
    executeXHR({"resource": resource, "data": data, "promise": resolve});
  })
}
getAllProjects() {
        return wrapPromise($projects.get);//$project.get == $http.get('/projects')
      },
© www.soinside.com 2019 - 2024. All rights reserved.