yunsheng.teng
yunsheng.teng
``` const a = ['A1', 'A2', 'B1', 'B2', 'C1', 'C2', 'D1', 'D2']; const b = ['A', 'B', 'C', 'D']; // ['A1', 'A2', 'A', 'B1', 'B2', 'B', 'C1', 'C2', 'C', 'D1',...
图1:实现代码 图2:nervjs的setState源码  图3:nervjs的clearCallBacks源码  图4:chrome调用栈时间轴  当第一setState执行完,render执行完,开始清理第一个setState的callback,从_pendingCallbacks数组中弹出callback执行,也就是f1,执行f1,遇到了setState,把f2push进_pendingCallbacks,f1执行完,检查_pendingCallbacks数组,还有一个f2,于是弹出f2,执行f2,但是其实这时state并没有更新,但是打印出的内容还是上次的state,这种场景下和React输出是不一致的。 @fjyGitHub 我给出的方案: 1.不要这样写; 2.在第二个callback用setTimeout。
check your system`diff`,`diff` may have been covered, i fixed, happy to code now