APIの結果をキャッシュするために必要な問題をコードで解決する必要があります。node.jsキャッシュでの同期リクエストの使用
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を持っています。
しかし、自分のコードで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...
}
シリーズを順番に実行することは保証されますか?ありがとう! –
はい、保証されます。 '.each'だけを使用すると、parrallelで実行されるため、保証されません – cejast