javascript 使用与可观察模式相同的代码概念的不可观察解决方案。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了javascript 使用与可观察模式相同的代码概念的不可观察解决方案。相关的知识,希望对你有一定的参考价值。

import {
    BUTTON_DOWN,
    BUTTON_UP,
    doButtonPressAction,
} from './actions'

const timeLimit = 300

let timeoutId = 0

const numButtonPresses = {
    numDown: 0,
    numUp: 0,
}

const resetButtonPresses = () => {
    numButtonPresses.numDown = 0
    numButtonPresses.numUp = 0
}

const handleButtonPress = buttonState => {
    if (buttonState === BUTTON_DOWN) {
        numButtonPresses.numDown += 1
    }

    else if (buttonState === BUTTON_UP) {
        numButtonPresses.numUp += 1
    }

    clearTimeout(timeoutId)

    new Promise(resolve => (
        timeoutId = setTimeout(resolve, timeLimit)
    ))
    .then(resetButtonPresses)
    .then(
        doButtonPressAction(
            bluetoothAddress,
            { ...numButtonPresses }
        )
    )
}

const listenForButtonPress = bluetoothAddress => {
    new FlicConnectionChannel(bluetoothAddress)
    .on('buttonUpOrDown', handleButtonPress)
}

以上是关于javascript 使用与可观察模式相同的代码概念的不可观察解决方案。的主要内容,如果未能解决你的问题,请参考以下文章

我可以将 async/await Promises 与可观察的 RXJS 混合使用吗?

观察者模式

角度 2 ngIf 与可观察?

将数组与可观察的MobX可观察数组进行比较

用java语言实现一个观察者模式

JavaScript数组概念及相关练习