exercism / exercism/javascript

Implement new Concept Exercise: Async/Await

Open
#1,502 15 comments 0 reactions 0 assignees View on GitHub
new exercise :sparkles: x:action/create x:knowledge/intermediate x:module/concept-exercise x:rep/large x:size/large x:status/claimed x:type/content
Dominant language
JavaScript
Stars
652
Forks
657
Avg merge
19h 37m
Merged PRs (30d)
6

Description

## Goal
The goal here is to create a new concept exercise and a new concept from scratch.

## Getting started
Here you can read about what Concept Exercises are and how they are structured:

- [What are Concept Exercises?](https://exercism.org/docs/building/product/concept-exercises)
- [Concept Exercises](https://exercism.org/docs/building/tracks/concept-exercises)
- [Concepts](https://exercism.org/docs/building/tracks/concepts)

If you have not done so yet, it is probably also helpful to do a couple of "Learning Exercises" (this is how they are called on the site) yourself. You can also look at the code of an existing concept exercise like [`bird-watcher`](https://github.com/exercism/javascript/tree/main/exercises/concept/bird-watcher) (concept [`for-loops`](https://github.com/exercism/javascript/tree/main/concepts/for-loops)) for reference.

## Concepts

The following concept needs to be created. You can use the introduction.md file of the concept also as introduction.md file of the exercise. No need to create different content at this point. Additionally, if you want to save some time it is ok to not have an extensive about.md at this point. It can also be mainly the instruction.md content, maybe with some additions you would like to make.

* `async-await`

## Learning Objectives

In the concepts the student should learn about the following topics and then practice them in the concept exercise.

* Async functions
* Await
* Relation to promises
* Error handling with try/catch/finally
* Top level await (incl. a note that it might not yet be available in all environments)

## Out of Scope

* Repeating details about promises

## Prerequisites

The following concepts should be assumed and defined as prerequisites for the new exercise:

* `promises`
* `errors`

## Resources
Here some links that might be helpful as a starting point:
- https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/async_function
- https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/await
- https://javascript.info/async-await

## Help

You can choose to do this solo-style, or collaborate with multiple people on this. The suggested approach is to

1. **First accept this issue by saying "I'd like to work on this"** (no need to wait for a response, just go with it) and optionally request that someone works with you (and wait for a second person to accept your request).
2. Use this issue to discuss any questions you have, what should be included in the content and what not and to collect reference material.
3. Create a PR and set "exercism/javascript" as reviewers. Additionally you can write in #maintaining-javascript that your PR is ready for review. Once you incorporated any critical feedback that the reviewer might give you and the PR is approved, it will be merged by a maintainer.

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.