queueMicrotask を使用してマイクロタスクを作成してください。

Promise.then以前は、 (MutationObserverブラウザ環境の API。DOM の変更を監視するために使用されます)、async/await( process.nextTickNode.js によってのみサポートされており、本質的にはイベント ループの一部ではありません) など、カスタム マイクロタスクを作成するためにあらゆる手段を試みました。

偶然にも、ブラウザには実際にマイクロタスクを生成する方法があることを発見しました。

2023-09-23-13-48-54

これはネイティブのqueueMicrotaskメソッドであり、windowオブジェクト内に存在し、現時点では良好な互換性があります。

2023-09-23-13-50-31

queueMicrotask使用方法は非常に簡単で、マイクロタスクにパッケージ化したい関数を渡すだけです。次の例を参照してください。

console.log('1');
queueMicrotask(() => {
    
    
  console.log('2');
  Promise.resolve().then(() => {
    
    
    console.log('3');
  });
  setTimeout(() => {
    
    
    console.log('4');
    queueMicrotask(() => {
    
    
      console.log('5');
    });
  });
});
setTimeout(() => {
    
    
  Promise.resolve().then(() => {
    
    
    console.log('6');
  });
  console.log('7');
  queueMicrotask(() => {
    
    
    console.log('8');
  });
});
console.log('9');

印刷結果: 1 9 2 3 7 6 8 4 5

比較的、queueMicrotaskマイクロタスクを生成するのに最も便利な方法なので、まだ実装していないブラウザ メーカーが時間を見つけてフォローアップすることを願っています。

オンラインで検索したところ、queueMicrotask の提案は 2018 年に承認され、2019 年に友人が API を導入したことがわかりました。私はそれについて今しか知りません。本当に恥ずかしいことです。

おすすめ

転載: blog.csdn.net/m0_51969330/article/details/133205528