---
# System prepended metadata

title: 17 Coordinating timelines

---

# 17 Coordinating timelines

## There’s a bug! (after optimization)

![](https://i.imgur.com/QosSI0I.jpg)

## Identify actions: Step 1
![](https://i.imgur.com/q6uz1Zl.jpg)

## Draw each action: Step 2
![](https://i.imgur.com/wej7N4G.jpg)

## Simplify the diagram: Step 3

### JavaScript threading model simplification steps
1. All actions on a single timeline go into a single box.
2. Consolidate timelines that end by creating one new timeline.

![](https://i.imgur.com/OY7L4og.jpg)

![](https://i.imgur.com/GB4lqvW.jpg)

## Possible ordering analysis
![](https://i.imgur.com/RtLs3pk.jpg)


## Why this timeline is faster
![](https://i.imgur.com/6Z6tGf6.jpg)


## Waiting for both parallel callbacks

![](https://i.imgur.com/4jijBae.jpg)


## A concurrency primitive for cutting timelines

![](https://i.imgur.com/6YC8ijC.jpg)

![](https://i.imgur.com/A845C7Y.jpg)


## Using Cut() in our code

![](https://i.imgur.com/GAeROH4.jpg)
![](https://i.imgur.com/h65vege.jpg)

### Promise.all
![](https://i.imgur.com/mtTgn7R.jpg)
https://stackoverflow.com/a/52669775/5247640

## Uncertain ordering analysis
![](https://i.imgur.com/scshsDL.jpg)


## Parallel execution analysis
![](https://i.imgur.com/s8RuFjM.jpg)


## Multiple-click analysis
![](https://i.imgur.com/QJucmwe.jpg)


## A primitive to call something just once
![](https://i.imgur.com/uNUV6tP.jpg)

## Implicit versus explicit model of time
![](https://i.imgur.com/1lElckK.jpg)

## Summary: Manipulating timelines

![](https://i.imgur.com/MLcnYwO.jpg)
