interval: 0とimmediate: falseの組み合わせは無効
少し考えればわかることだった
code:ts
return (...parameters: T) =>
new Promise<Result<U>>((resolve, reject) => {
queue?.resolve?.({ executed: false });
queue = { parameters, resolve, reject }; // ここまで同期実行される
queueMicrotask(runNext); // ここをmicrotasksに積む
});
気付いたきっかけ
interval === 0 && immediate === falseの条件で組んだテストが全く成功しなかった
訝しんでアルゴリズムを点検している最中に気付いた
説明
どうするか
immediateはinterval > 0のときのみ有効なoptionとする