javascript 外观的完全重构

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了javascript 外观的完全重构相关的知识,希望对你有一定的参考价值。

const { addYears } = require('date-fns/fp')
const { finalize, switchMap, takeUntil, tap } = require('rxjs/operators')
const { interval, timer } = require('rxjs')

require('./directory')

const config = require('$config')

const {
  flashRandomLight,
  getTimeUntilHalloweenEnds,
  getTimeUntilHalloweenStarts,
} = require('./')

const addOneYear = (
  addYears(
    1,
  )
)

const getHalloweenFlasherObservable = (
  date = new Date(),
) => (
  timer(
    getTimeUntilHalloweenStarts(
      date,
    )
  )
  .pipe(
    tap(() => (
      console
      .info('LIFX Halloween Activated')
    )),
    switchMap(() => (
      interval(10000)
      .pipe(
        takeUntil(
          timer(
            getTimeUntilHalloweenEnds()
          )
        ),
        finalize(() => (
          console
          .info('LIFX Halloween Deactivated')
        )),
        flashRandomLight(
          config
          .getLifxSelector()
        ),
        tap(console.info),
      )
    )),
  )
  .subscribe(
    console.log,
    console.error,
    () => {
      getHalloweenFlasherObservable(
        addOneYear(
          date,
        )
      )
    }
  )
)

getHalloweenFlasherObservable()

以上是关于javascript 外观的完全重构的主要内容,如果未能解决你的问题,请参考以下文章

外观模式

外观模式(Facade)

外观代理和图层

Eclipse 中的重构功能

外观模式

javascript 重构测试的重构