From 67438fe9b5c5488f7f12c3d8d34df0b555c5a6ec Mon Sep 17 00:00:00 2001 From: fupeng Date: Thu, 17 Mar 2022 15:25:12 +0800 Subject: [PATCH] =?UTF-8?q?fix(memoize):=20=E4=B8=BB=E5=8A=A8=E6=B8=85?= =?UTF-8?q?=E7=90=86=E8=BF=87=E6=9C=9F=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/promise/memoize.ts | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/src/promise/memoize.ts b/src/promise/memoize.ts index f8e48ee..0f452a8 100644 --- a/src/promise/memoize.ts +++ b/src/promise/memoize.ts @@ -24,10 +24,17 @@ function memoize( const returnFn = (async (...args: Parameters): Promise> => { const key = harsher(...args); - if (memos.has(key)) { - if (!timeoutMs || Date.now() < memos.get(key)!.expiration) { - return memos.get(key)!.value; - } + + if (timeoutMs) { + memos.forEach((item, k) => { + if (item.expiration > Date.now()) { + memos.delete(k); + } + }); + } + + if (!timeoutMs || memos.has(key)) { + return memos.get(key)!.value; } if (queues.has(key)) {