>in Concurrent Mode we can interrupt a render in the middle if user does an interaction
Can you interrupt an arbitrary user-written function that's called inside the rendering stack?
Re:Scheduling in React
by philipp-spiess on Thursday March 07, 2019 @06:24PM
(#19333689)
No, that's not possible in JavaScript. The important part is that React components are lazily evaluated[1] and are not rendered as a stack. So React can render a few components and then pause for higher priority work.
As a user of the framework, you don't need to care about this though. So your mental model can be that of an interruptable function.
[1]: https://overreacted.io/react-as-a-ui-runtime/#lazy-evaluatio...
Re:Scheduling in React
by ivanwonder on Friday March 08, 2019 @01:24AM
(#19335549)
I think to interrupt a render means interrupt the process of reconciliation. you don't have to response the user input until the difference of whole React element has been found.
https://overreacted.io/react-as-a-ui-runtime/#consistency
This is something setTimeout is incapable of helping with. Because even if you delay the work, at some point it’s still gonna block.
In either case this example is very simplified and doesn’t illustrate the subtle difference as much. We’ll prepare our own examples when the features are stable.