---
title: Scheduler
framework: combine
role: symbol
role_heading: Protocol
path: combine/scheduler
---

# Scheduler

A protocol that defines when and how to execute a closure.

## Declaration

```swift
protocol Scheduler<SchedulerTimeType>
```

## Mentioned in

Receiving and Handling Events with Combine

## Overview

Overview You can use a scheduler to execute code as soon as possible, or after a future date. Individual scheduler implementations use whatever time-keeping system makes sense for them. Schedulers express this as their SchedulerTimeType. Since this type conforms to SchedulerTimeIntervalConvertible, you can always express these times with the convenience functions like .milliseconds(500). Schedulers can accept options to control how they execute the actions passed to them. These options may control factors like which threads or dispatch queues execute the actions.

## Topics

### Declaring scheduler timekeeping and options

- [SchedulerTimeType](combine/scheduler/schedulertimetype.md)
- [SchedulerOptions](combine/scheduler/scheduleroptions.md)

### Accessing scheduler time properties

- [minimumTolerance](combine/scheduler/minimumtolerance.md)
- [now](combine/scheduler/now.md)

### Scheduling actions

- [schedule(_:)](combine/scheduler/schedule(_:).md)
- [schedule(after:_:)](combine/scheduler/schedule(after:_:).md)
- [schedule(after:interval:_:)](combine/scheduler/schedule(after:interval:_:).md)
- [schedule(after:interval:tolerance:_:)](combine/scheduler/schedule(after:interval:tolerance:_:).md)
- [schedule(after:interval:tolerance:options:_:)](combine/scheduler/schedule(after:interval:tolerance:options:_:).md)
- [schedule(after:tolerance:_:)](combine/scheduler/schedule(after:tolerance:_:).md)
- [schedule(after:tolerance:options:_:)](combine/scheduler/schedule(after:tolerance:options:_:).md)
- [schedule(options:_:)](combine/scheduler/schedule(options:_:).md)

## Relationships

### Conforming Types

- [ImmediateScheduler](combine/immediatescheduler.md)

## See Also

### Schedulers

- [ImmediateScheduler](combine/immediatescheduler.md)
- [SchedulerTimeIntervalConvertible](combine/schedulertimeintervalconvertible.md)
