我遇到了setTimeout的问题,我无法弄清楚原因。
我正在使用cordova,而setTimeout函数会导致奇怪的混淆。
app.displayData = function(device) {
app.readThermometer(device);
app.readAccelerometer(device);
app.readHumidity(device);
app.readMagnetometer(device);
//setTimeout(app.displayData(device), 5000);
};
执行一次。
app.displayData = function(device) {
app.readThermometer(device);
app.readAccelerometer(device);
app.readHumidity(device);
app.readMagnetometer(device);
setTimeout(app.displayData(device), 5000);
};
执行多次,但每5秒执行一次。这对我来说是一个问题,因为它阻止jQuery正确执行。 (永远不要预期dom修改)
我错过了什么?如果它是cordova中的一个错误,你知道在javascript中延迟代码执行的其他方法吗?
答案 0 :(得分:4)
您正在直接调用函数app.displayData
setTimeout(app.displayData(device), 5000);
请尝试以下
setTimeout(function () {
app.displayData(device);
}, 5000);
另一种选择,如果您更喜欢Function.bind
setTimeout(app.displayData.bind(app, device), 5000);