前端程序员面试题:setState是同步还是异步

语言: CN / TW / HK

前端程序员面试题:setState是同步还是异步

我一直说是异步。因为我是用他的时候,就是异步的。

然而,面试官给我扣分,说setState这个接口可以同步也可以异步。文档里写了。

我看了,面试官说的没错。

但我确实当他异步用,我没当他同步用过。没有因此产生过bug,需要的话我会传入一个异步回调函数。

但是面试官问,我答得不对,不够好,就扣分,就影响了我的技术,就每个月给我少发几百块钱。

所以如果不背面试题,一个月少几百块钱,一年少了几千块。而我只需要背一下,一年多几千块,那我为啥不背呢?

实际项目里,我使用过程中,我就把他当成异步的用,不会产生bug。

说到底,这个接口的文档,算下来这一页也有六百字。背下来也难。

其实也能理解,我也理解了。

说白了就是因为,如果做成同步,可能在事件中,一次触发很多次这个变量的变更,然后触发很多次算法比较,触发很多次渲染,这样性能可能不好,就把变更放在了一个等待处理的一个地方,这个地方,可以叫别的啥名字,如果名字没说对,可能面试又要扣分,就是放在了这个地方,然后如果又有更新就更新他,直到某个条件满足,才会开始真正的去改掉他的值,去触发比较算法,去更新。

我这样说,说的其实没错,但跟面试官背的,还是不一样。

面试的时候能不能说对这些名词解释很重要,少说对一个名词解释,就少了几千块钱一个月。少说对几个名词解释,就少了几万块一年,少说几个名词解释,比如居中有20种写法,你只说3中,那就少了几万块一年。