我们在应用程序中通过vue- $http.get并发执行多个资源调用。有没有办法设置一个限制,让vue-resource根据这个限制对请求进行排队并执行调用?
发布于 2019-02-03 05:50:17
我没有使用Vue-resource。
我只是简单地用另一个承诺来包装这个承诺:
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')
},https://stackoverflow.com/questions/46947293
复制相似问题