Skip to content

onceRun

包装传入函数并返回一个新函数, 确保它在同一时间只运行一次, 并返回一个 Promise, 该 Promise 会解析为同一时间第一次运行的结果

演示

示例

ts
import { 
delay
,
onceRun
} from 'mixte';
let
isRun
= false;
let
runCount
= 0;
// 包装传入函数并返回一个新函数 const
fn
=
onceRun
(async () => {
runCount
++;
isRun
= true;
await
delay
(2400);
isRun
= false;
return
runCount
;
}); const
res
=
fn
();
const
res2
=
fn
();
// 同一时间只运行一次, 返回同一时间第一次运行时返回的 Promise
console
.
log
(
res
===
res2
); // -> true
// 该 Promise 会解析为同一时间第一次运行的结果
console
.
log
(await
res
); // -> 1
console
.
log
(await
res2
); // -> 1

Released under the MIT License.