gpt4 book ai didi

javascript - 填充缓存数据

转载 作者:行者123 更新时间:2023-12-03 01:29:32 26 4
gpt4 key购买 nike

考虑以下 JavaScript 中查询函数的缓存

channelCache={};
async getChannelType(channel: string): Promise<string> {
if (!this.channelCache.hasOwnProperty(channel)) {
channelCache[channel] = await this._deviceService.GetChannelSetting(channel);
}
return channelCache[channel];
}

这工作得很好,但是在我的代码中有一种情况,它被依次调用 100 次。问题是所有 100 次都通过了 if 语句并开始查询服务。我希望 if 语句周围有某种互斥机制,一次只允许运行 1 个查询。

我尝试过 prex 信号量,但看起来这在 IE 11 中不起作用。有什么建议吗?

最佳答案

您不需要任何类型的信号量或锁定。

相反,您应该缓存异步 promise 而不是最终值:

getChannelType(channel: string): Promise<string> {
if (!this.channelCache.hasOwnProperty(channel)) {
channelCache[channel] = this._deviceService.GetChannelSetting(channel);
}
return channelCache[channel];
}

关于javascript - 填充缓存数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51365864/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com