请考虑以下内容:
const cached = this.cache.get(somekey);
// console.log(!cached);
if (!cached) {
console.log(cached);
return requestRetry({
url: fullUri,
json: true,
maxAttempts: 3, // (default) try 5 times
retryDelay: 2000, // (default) wait for 5s before trying again
retryStrategy: requestRetry.RetryStrategies.HTTPOrNetworkError,
fullResponse: true
}).then((result) => {
//do something with the result and return result
this.cache.set(somekey, data);
return result;
}
} else {
//return cached result
}
以上代码在kafka流使用者的onmessage方法中被调用。我面临的问题是,如果结果不是且未定义缓存,则它将为传入的每个kafka消息多次调用url。
如何做到这样,只对传入的第一条消息进行一次调用,设置缓存,然后在下一条消息中,进入其余部分并从缓存中检索数据。
答案 0 :(得分:0)
只需将requestRetry
结果承诺放入缓存中。
解决后,缓存将更新为准确的结果。