✅await後に呼び出したPromiseがすぐに実行されない
code:ts
const throttled = throttle(async () => {...});
const pending = throttled(); // run
throttled(); // skip
throttled(); // skip
await pending;
const pending2 = throttled();
throttled();
console.log((await pending2).executed);
// expected: true
// actual: false
気づいたきっかけ
テストを書いて実行している最中に見つけた
考えられる原因
executeAsyncFunction()の実行終了からrunningをtrueにするまでにラグがある
この間に次のタスクを呼び出してしまうせいで、一旦queueに詰め込まれてしまう
2021-09-14 08:25:25 対処
タスクを実行したあとresolve()/reject()を呼び出す前にrunningをfalseにする
これで今書いているテストは通るようになった