【发布时间】:2015-06-05 14:11:17
【问题描述】:
函数StartScan() 通过单击按钮调用,addDevices() 动态创建输出。我希望此输出每 2 或 5 秒自动更新一次。
在控制台中,我看到函数 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);
}
【问题讨论】:
-
如果您使用的是 jQuery,请将标签添加到您的问题中。
-
什么是
format()?你确定它返回 jQuery 对象吗? -
注意:
setTimeout()期望函数与超时一起调用。它不等同于暂停当前线程的sleep()函数,从而延迟后续代码。它只是延迟调用提供给它的函数。 -
setTimeout(50000)完全没用。 Javascript 是异步的,它会启动超时并在此期间继续执行代码,同时超时计数。
标签: javascript jquery loops jquery-mobile