Mathematica SelectionEvaluate order
===

I am working on a project that requires me to iteratively evaluate the expressions in a separate existing notebook file. My approach is to construct a loop that calls `SelectionEvaluate` at each iteration. However, since I need to cleanup the variables at the end of each iteration, I need to call `Remove` to do the cleanup. I realized that every time `SelectionEvaluate` was invoked, the code in the target notebook file was put in the evaluation queue, but not executed until everything after `SelectionEvaluate` (including the `Remove` command) is executed. The code order appears to be disrupted.

Is there a way to "pause" after the `SelectionEvaluate` call and "continue" until everything "to be evaluated" has done running?

Regards,

Jason