空循环是否太昂贵?

时间:2018-07-11 18:02:29

标签: javascript asynchronous busy-waiting

例如,在JavaScript中,我想监视一个变量并阻止控件,直到变量被更改为止。我可以做这样的事情:

var foo = 1;
// Some async function that will modify `foo`
while (foo === 1){}
//This code will run after `foo`  changes
console.log("New value of foo is", foo);

但这是实现这一目标的正确方法吗?在CPU上难吗?

编辑:基本上,我想实现的是,即使有一个异步函数,也使代码看起来像是同步的。

EDIT2:由于上述修改中提到的原因,我的问题不再重复。

1 个答案:

答案 0 :(得分:-3)

有一个对象监视。因此,如果要观看对象,请执行以下操作:

var obj = {foo: 1}
obj.watch('foo', (id, oldval, newval) => {
    //do something
})

您不会在看一个裸变量,但是这没什么大不了的。您可以创建一个仅包含要监视和适当使用的值的对象。