JavaScriptイベントのリリース/購読

1068 ワード

1、リリース/購読モードも多くの設計モードの一つである.
2、この方式はes 5の下でかなり優雅に非同期操作を処理できます.
3、何が発行/購読ですか?栗を挙げます.
fn 1,fn 2,fn 3はいずれもイベントのリリース者として見なされ、実行されると、イベントがリリースされると仮定する.この時、私達は一つのイベントの購読者を通して、それらの順序を含めてこれらのイベントを大量に購読して処理することができます.メッセージ購読者を追加する方法:
class AsyncFunArr {
  constructor (...arr) {
    this.funcArr = [...arr]
  }

  next () {
    const fn = this.funcArr.shift()
    if (typeof fn === 'function') fn()
  }

  run () {
    this.next()
  }
}
4、呼び出し
//   fn1,fn2,fn3  
const asyncFunArr = new AsyncFunArr(fn1, fn2, fn3)

//fn1,fn2,fn3          next()  :
function fn1 () {
  console.log('Function 1')
  asyncFunArr.next()
}

function fn2 () {
  setTimeout(() => {
    console.log('Function 2')
    asyncFunArr.next()
  }, 500)
}

function fn3 () {
  console.log('Function 3')
  asyncFunArr.next()
}
5、出力:
//Function 1//Function 2
//Function 3
6、まとめ:
上記の方法により、非同期要求データなど多くのことが実現される.
7、参考資料:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes/constructor