How does observe_field work recursively

I use observe_field in a view page to monitor a field (field1). Whenever
field1 changed, a action will render a partial (partial1). In partial1,
I use observe_field to monitor a field (field2).

so the problem is: when a user changed the field1, its action will set
some variables and render the partial1. In partial1, the field2 changed
because of some variables changed in the action, but the observe_field
doesn't invoke its action. If the user changed the field2 manually, the
observe_field works fine. So I wander why the observe_field doesn't work
if the field changed according to a render.

That's normal. observe_field observes user triggered events not things
like javascript updating the page.