我有一個canvas 連結API來即時更時地圖狀態,
所以會每500ms 更新一次,我有一個值是常狀默認是false
當我讀到onclick時就會改成true 去取消一些功能,
但每跑一次就會更新為false,導致我週回時間可能來不及去改成true就又被更新為false
請問要如何改善這問題?
除了把更新時間拉長外,因為需要即時,週回時間可能沒辦法讓步....
html:
<button type="button" onclick="turnoff()" class="setbtn">cancel</button>
javascript:
function turnoff(){
cancel=true
}
-----canvas--------
var main = function () {
draw();
};
var draw = function () {
if (tempMarker.status=='n'){
tmpcolor = "green"
}
if (tempMarker.status=='e'){
tmpcolor = "red"
}
}setInterval(main, 200);
-----------------
--------- API ----------------
function start_run(){
/** 取到tempMarker.status的值*//
}
if (tempMarker.status == 'e' && cancel==false){
/**不更新tempMarker.status的值*/
}else{
tempMarker.status == api_value
}
setTimeout(start_run, 200);
cancel=false
}
-------------------------
但每跑一次就會更新為false,導致我週回時間可能來不及去改成true就又被更新為false
這部分要看你程式怎麼設計的才有辦法回答
但程式有寫好的話,應該不會有這樣的問題才對
建議描述一下你的寫法
例如這樣,稍微有個架構才比較好判斷問題在哪
let Foo = {
flag: false,
/**
* 更新 canvas
*
* @param {*} data 從 api 抓的資料
*/
updateCanvas(data) {
if (flag) {
// flag == true 的處理
} else {
// flag == false 的處理
}
}
}
theButtonElement.addEventListener('click', () => {
Foo.flag = !Foo.flag;
});
另外有確認過這不是因為「太忙碌造成使用者操作沒反應」嗎?