簡體   English   中英

JavaScript 中 setInterval 中的函數

[英]Functions inside setInterval in JavaScript

我在 JavaScript 中調用 setInterval 函數內的函數時遇到問題。 我的代碼:

setInterval(function() {
y.on('deviceconnected', function(device) {
    console.log("Power off the device");

    var state = false;
    y.setPower(device, state, 300);
});
}, 3000);

該功能會關閉我房間的燈泡,並且在 setInterval 之外它也能正常工作。 不幸的是,在 setInterval 中它根本不起作用。 程序永遠不會進入該功能,例如打印:關閉設備電源。

我應該如何在 setInterval 中調用該函數?

與需要的相比,你是在倒退。 是的,文檔

在嘗試控制任何設備之前,您必須已完成設備發現和連接。

但這意味着它必須在控制之前發生,一次。 不是每 3 秒一次。
你需要完全相反的:

...
y.on('deviceconnected', function(device) {
  y.setPower(device,true,300);
  setInterval(function(){
    y.setBrightness(device,50,300);
    setTimout(function(){
      y.setBrightness(device,100,300);
    },1500);
  },3000);
});

完全臨時示例,從文檔中復制了部分內容。 300-s 是轉換時間(以毫秒為單位),首先它為設備通電,然后它嘗試每 1.5 秒在 50% 和 100% 亮度之間切換(或多或少,內部超時不是很好,它寧願使用狀態變量代替)。

對不起,我沒有提到,但我有搜索網絡尋找我的設備的功能和將我的客戶端連接到設備的功能。 此外,我有使用對我的服務器的請求從我的光傳感器獲取勒克斯值的功能。 使用該值,我想實時控制我的房間燈泡。 我的意思是運行客戶端,它使用功率和亮度功能來控制我的房間燈泡(算法尚未完成)。 我認為 setInterval 最適合此目的,但我對其他解決方案持開放態度。 謝謝您的幫助

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM