我正在撰写一个具有以下结构的网页:
为了保证正确性,只有在另一个表完全更新(即完成计算)之后才需要更新表。但是,我不知道如何有效地实现这一点,我在JavaScript中找不到任何wait
工具。
目前,我使用以下方法:
updated
并将其设为false
; while
循环,直到updated
为true
; updated
设置为true
。这对我来说似乎不直观,但我想不出任何其他方式。有没有什么好方法可以做到这一点?
感谢您的任何意见!
答案 0 :(得分:6)
添加一个监听器,一旦完成计算并收到事件,将更新设置为true。
而不是将updated
设置为true,然后等待updated
为真 - 只需在侦听器中执行您想做的任何事情。
myEventBus.addListener(function () {
// do whatever
updateTable();
alert('table updated!');
});
答案 1 :(得分:5)
做空的while循环是个坏主意。您不仅要刻录CPU周期,而且Javacript是单线程的,因此您将永远循环,而不会让任何人有机会更改变量。
您可以做的是重写具有其他人的表格,以“触发事件本身”。有很多方法可以做到这一点,但基本上你只是想让它调用一个“延续”函数而不是盲目地返回。这个函数可以预定义,或者你可以把它作为参数传递给某个地方。
//this is just illustrative
//Your actual code will be probably very different from this.
function update_part(){
//do something
signal_finished_part()
}
var parts_done = 0;
function signal_finished_part(){
parts_done ++;
if(parts_done >= 5){
signal_all_parts_done();
}
}
function signal_all_parts_done()
{
//do something to table A
}
答案 2 :(得分:0)
您可以为更新触发器编写回调函数。为了避免混乱的回调,您也可以使用promises,并根据更新操作中检索的数据更新表的某些部分。接受建议。