我有一个带有特定签名的函数处理程序。
例如:
const config = {
external: () => {
// do something
}
}
此处理程序可以触发n
次。但是,我想在此处理程序中使用一个变量,并且只触发一次并进行缓存。我不想让变量位于全局范围内的config之外。如何在不使用全局范围的情况下定义变量并将其缓存用于后续调用?
更糟糕的是,创建此缓存变量的事情是一个应许。
答案 0 :(得分:0)
您可以将处理程序包装到立即调用的函数表达式中,并将缓存的promise存储在闭包中:
const config = (() => {
let cachedPromise;
return () => {
if (!cachedPromise) {
cachedPromise = new Promise(resolve => {
setTimeout(() => {
resolve(5);
}, 1000)
});
}
cachedPromise.then((cache) => {
console.log(`Cached value ${cache}`);
})
};
})();