2015-06-05 22 views
1

函數StartScan()被稱爲通過按鈕單擊,並且addDevices()動態地創建輸出。我希望這個輸出每2或5秒自動更新一次。帶append()的簡單循環不起作用

在控制檯中,我看到函數StartScan()自動重新加載,所以這些值在那裏,我只是把addDevice()函數放在一個循環中。

我在哪裏錯了?

function startScan() 
{ 
    var paramsObj = {serviceUuids:[]}; 

    console.log("Start Scan : " + JSON.stringify(paramsObj)); 

    bluetoothle.startScan(startScanSuccess, startScanError, paramsObj); 

    return false; 
} 

function startScanSuccess(obj) 
{ 
    console.log("Start Scan Success : " + JSON.stringify(obj));  

    if (obj.status == "scanResult") 
    { 
     console.log("Scan Result"); 

     addDevice(obj.address, obj.name, obj.rssi); 
    } 
    else if (obj.status == "scanStarted") 
    { 
     console.log("Scan Started"); 
    } 
    else 
    { 
     console.log("Unexpected Start Scan Status"); 
    } 
} 

function addDevice(address, name, rssi) 
{ 
     var $devices = $(".devices"); 

     var $check = $devices.find("li[data-address='{0}']".format(address)); 

     if ($check.length > 0) 
     { 
      return; 
     } 
     var template = $("#device").text().format(address, name, rssi); 

     $devices.append(template); 
     $devices.trigger("create"); 

     window.setTimeout(50000); 
     console.log("Loop: " + i); 

     if (rssi < -100){ 
      alert(name + " lost proximity"); 
     } 

     setInterval(function(){ addDevice(adress, name, rssi);}, 2000);  
} 
+0

如果您使用jQuery,請將標記添加到您的問題。 – j08691

+0

什麼是'format()'?你確定它返回的jQuery對象? – George

+4

注意:['setTimeout()'](https://developer.mozilla.org/en-US/docs/Web/API/WindowTimers/setTimeout)需要一個函數與超時一起調用。它不等同於暫停當前線程的'sleep()'函數,延遲了以下代碼。它只是延遲調用提供給它的函數。 –

回答

0

我相信你想:

function addDevice(address, name, rssi) 
{ 
     var $devices = $(".devices"); 
..... 
} 

setInterval(addDevice, 2000); // without arguments 
setInterval(function(){ addDevice(address, name, rssi) }, 2000); // with arguments 

這將啓動addDevice功能每2秒。

+0

我改變了我的代碼,但它仍然不起作用。 –

+0

定義「不工作」。這非常含糊。控制檯中有錯誤嗎?如果你console.log的東西?你怎麼知道函數是否被調用?等等。 –

+0

console.log中沒有錯誤,通過console.log(「Start Scan:」+ JSON.stringify(paramsObj))反之安靜。我在控制檯上看到我想在屏幕上看到的內容。 addDevice函數被調用一次,但我希望它重複,就像startscan函數一樣。 –