【发布时间】:2016-11-18 04:14:53
【问题描述】:
我的代码中有一个与缓存 API 结果有关的问题需要解决。我有一些像这样的 async.map:
for(var user of allUsers) {
var requestList = fill(cache, locations, apiUrl, cacheMap);
async.map(requestList, function(obj, callback) {
// ...
}, function(err, results) {
// PUT RESULTS INTO A CACHE
});
}
函数fill 只是在缓存中查看locations 中的位置是否存在,它不会为要运行的 API 创建请求 URL。
但是我意识到缓存在我的方法中根本没有多大用处,因为我的代码将调度 async.map 并立即开始下一个循环迭代fill,这意味着缓存不会在用户的每次迭代中同步。
我将如何确保用户的每次迭代都具有上一个用户的缓存更新版本?我需要非常聪明地使用我有限的 API 调用,所以如果有重复的请求我想请求一次,然后在以后的请求中从缓存中提取结果。
我现在唯一的想法是同步请求而不是 async.map,但我知道这违背了 node.js 的设计。
for(var user of allUsers) {
var requestList = fill(cache, locations, apiUrl, cacheMap);
// sync map instead
requestList.map(function(obj) {
var res = sync-request(obj)
// put request result into cache
});
// cont...
}
【问题讨论】:
标签: javascript node.js asynchronous