$SynchronousEvaluation

$SynchronousEvaluation

is a symbol whose value is True if it is evaluated as part of a synchronous evaluation.

Details

  • A synchronous evaluation is generally triggered by controls in the front end. Controls that may generate synchronous evaluations include Button, EventHandler, and any control that takes a Dynamic value.
  • Manipulate may trigger synchronous evaluations, depending upon the value of the SynchronousUpdating and SynchronousInitialization options.
  • A synchronous evaluation is the same as a preemptive evaluation. Some controls, such as Button and EventHandler, support an option setting of Method->"Preemptive", which causes the control's evaluations to be synchronous.
  • Synchronous evaluations halt the system while being evaluated. A typical use of $SynchronousEvaluation is to write code that should behave differently to prevent halting the system excessively.

Examples

open allclose all

Basic Examples  (2)

Typical shift-return evaluations are asynchronous:

Evaluations within Dynamic are synchronous by default:

Scope  (2)

Evaluations within DynamicModule Initialization are synchronous by default:

Manipulate has a different default for SynchronousUpdating:

Properties & Relations  (3)

By default, Button and similar constructs do synchronous evaluation:

With the option Method->"Queued", the evaluation is done asynchronously:

Synchronous evaluation in Dynamic is controlled by the SynchronousUpdating option:

The initialization of DynamicModule is controlled by the SynchronousInitialization option:

Introduced in 2015
 (10.3)