---
title: "run(_:completion:)"
framework: spritekit
role: symbol
role_heading: Instance Method
path: "spritekit/sknode/run(_:completion:)"
---

# run(_:completion:)

Adds an action to the list of actions executed by the node and schedules the argument block to be run upon completion of the action.

## Declaration

```swift
func run(_ action: SKAction, completion block: @escaping () -> Void)
```

```swift
func run(_ action: SKAction) async
```

```swift
func run(_ action: SKAction, completion block: @escaping @Sendable () -> Void)
```

## Parameters

- `action`: The action to perform.
- `block`: A completion block called when the action completes.

## Mentioned in

Getting Started with Actions

## Discussion

Discussion important: You can call this method from synchronous code using a completion handler, as shown on this page, or you can call it as an asynchronous method that has the following declaration: func run(_ action: SKAction) async For information about concurrency and asynchronous code in Swift, see Calling Objective-C APIs Asynchronously.

## See Also

### Running Actions

- [Getting Started with Actions](spritekit/getting-started-with-actions.md)
- [run(_:)](spritekit/sknode/run(_:).md)
- [run(_:withKey:)](spritekit/sknode/run(_:withkey:).md)
- [speed](spritekit/sknode/speed.md)
- [isPaused](spritekit/sknode/ispaused.md)
- [action(forKey:)](spritekit/sknode/action(forkey:).md)
- [hasActions()](spritekit/sknode/hasactions().md)
- [removeAllActions()](spritekit/sknode/removeallactions().md)
- [removeAction(forKey:)](spritekit/sknode/removeaction(forkey:).md)
