我有一个用例,我的 http 请求正在服务器上缓存中间结果。如果缓存不存在,则请求通过请求另一台服务器来构建它。
这些请求使用 AJAX 连续(循环)触发到节点服务器,请求的数量可以在 50 到 500 的范围内。
问题: 由于请求是在循环中进行的并且缓存已经不存在,所以前几个请求都尝试构建缓存,有时后续请求会找到半构建的缓存,这会返回错误的结果。
我可以通过轮询来规避这个问题:
(function next(){
if(!wait){
fs.readFile(cacheFile, function(err){
if(err) {
wait = true;
createCache(); // sets wait = false;
} else {
useCache();
}
});
} else {
setTimeout(next,waitTime);
}
})();
我的问题: 是否可以在不进行轮询的情况下暂停请求,并仅在第一个请求完成缓存构建过程后继续?