Skip to content

Instantly share code, notes, and snippets.

@afaquejam
Last active August 18, 2019 15:32
Show Gist options
  • Save afaquejam/3f977de7242eff3b80b9286c0e0714a3 to your computer and use it in GitHub Desktop.
Save afaquejam/3f977de7242eff3b80b9286c0e0714a3 to your computer and use it in GitHub Desktop.
Async Await Example
'use strict';
const students = [
{
id: 1,
name: 'Bart',
},
{
id: 2,
name: 'Lisa',
},
{
id: 3,
name: 'Gisborne',
},
];
const grades = [
{
studentId: 1,
scores: [55, 93, 23],
},
{
studentId: 2,
scores: [45, 67, 98],
},
{
studentId: 3,
scores: [32, 76, 28],
},
];
let getStudentId = (studentName) => {
return new Promise((resolve, reject) => {
let result = undefined;
for (let student of students) {
if (student.name === studentName) {
result = student.id;
break;
}
}
if (result === undefined) {
reject(null);
} else {
resolve(result);
}
});
};
let getStudentGrades = (studentId) => {
return new Promise((resolve, reject) => {
let result = null;
for (let grade of grades) {
if (grade.studentId === studentId) {
result = grade.scores;
break;
}
}
if (result === null) {
reject(null);
} else {
resolve(result);
}
});
};
let getStudentResult = async (studentName) => {
let studentId = await getStudentId(studentName);
let studentScores = await getStudentGrades(studentId);
let sum = 0;
for (let score of studentScores)
sum += score;
return sum/3;
};
let studentName = 'Bart';
getStudentResult(studentName).then((result) => {
console.log(`${studentName}'s result is ${result} %.`);
}).catch((error) => {
console.log(`${studentName} not found!`);
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment