问题:
我目前正在使用socket.io
(服务器端)来处理来自客户端的异步请求。这些请求被传递到上游服务 - 这是相当昂贵/缓慢且速率有限的。我想解复用/缓存对上游服务的调用。例如10 次调用getUserProfile(123)
=> 1 次调用上游服务(在一段时间内)
我尝试使用缓存(lru-cache),但是在从上游服务器获得响应(对于第一次调用 - 所以这不起作用)之前,从客户端收到了一些调用(在毫秒内)。
debounce -promise库听起来像我需要的,但是它没有考虑不同的参数(例如
getUserProfile(123)
andgetUserProfile(456)
=> 期望profile_123
andprofile_456
,但是返回profile_456
(两次)。
如果我举个例子可能最好...
服务器.js
// on request from client...
socket.on('getUserProfileRequest', userId => {
getUserProfile(userId).then(profile => socket.emit('getUserProfileResponse', profile))
})
...
function getUserProfile(userId) {
// ... call upstream server, do async work, return a Promise...
}