有没有办法使此函数在增加的结果数上运行?

时间:2019-05-24 23:14:17

标签: javascript

我浏览了一些Cisco教程和一些朋友的帮助,以使该函数能够根据设备状态的结果运行一些命令。

我想增加设备的状态,然后根据X个结果运行该功能。

我尝试创建一个变量0,然后递增结果,但是我不知道如何将其应用于函数。

xapi.status.on("RoomAnalytics PeoplePresence", checkPeopleCount);

function checkPeopleCount(peeps) {
    if (peeps === 'No') {
        xapi.command("Presentation Stop");
        console.log('Content Stopped');
    }
}

最终,我希望它可以基于3个或更多“否”响应运行,而不是基于一个“否”响应运行某些命令。

1 个答案:

答案 0 :(得分:2)

执行此操作的典型方法是捕获闭包中的count变量,然后返回使用该count的新函数,然后可以将其传递给处理程序。出于演示目的,b.addEventListener类似于您的xapi.status.on

let b = document.getElementById('button')
function checkPeopleCount() {
  let count = 0
  return function(peeps) {
    if (count === 3) {
      console.log("hit three: count is:", count)

    } else {
      console.log("count: ", count)
    }
    count++
  }
}
let counter = checkPeopleCount()

b.addEventListener('click', counter)
<button id="button">click me</button>

(显然没有经过测试),但这会转化为大致类似的内容:

function makeCounter() {
    let clicks = 0
    return function(peeps){
        if (clicks === 3) {
            xapi.command("Presentation Stop");
            console.log('Content Stopped');
        } else if(peeps === 'No') {
            clicks++;
        } else {
            doSomethingElse();
        }
    }

}
checkPeopleCount = makeCounter()

xapi.status.on("RoomAnalytics PeoplePresence", checkPeopleCount);