Skip to content

Instantly share code, notes, and snippets.

@afaquejam
Last active August 18, 2019 15:32
Show Gist options
  • Save afaquejam/69ad91f66f392271a885f76e138b0cee to your computer and use it in GitHub Desktop.
Save afaquejam/69ad91f66f392271a885f76e138b0cee to your computer and use it in GitHub Desktop.
General Promise Usage
'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 studentName = 'Lisa';
getStudentId(studentName).then((studentId) => {
return getStudentGrades(studentId);
}).then((scores) => {
let sum = 0;
for (let score of scores)
sum += score;
let average = sum/3;
console.log(`${studentName}'s result is ${average} %.`);
}).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