Your question is Callbacks, Promises, Async/Await. Take a moment with it on the right.
Talk me through your thinking if you like. When you're confident, submit your answer and I'll grade it like a real screen (7/10 or better passes).
You're a frontend engineer at Atlassian working on an issue-tracker page similar to Jira. This code loads an issue and its comments to render the page, mixing an older callback-based API with promises and async/await.
function getIssueLegacy(issueId, callback) {
fetch("/api/issues/" + issueId)
.then((res) => res.json())
.then((data) => callback(null, data))
.catch((err) => callback(err));
}
function getComments(issueId) {
return fetch("/api/issues/" + issueId + "/comments").then((res) => res.json());
}
async function loadIssuePage(issueId) {
let issue;
getIssueLegacy(issueId, (err, data) => {
issue = data;
});
const comments = getComments(issueId);
console.log("issue", issue);
console.log("comment count", comments.length);
return { issue, comments };
}
Explain exactly what this code does when it runs, including how the callback, the promise and the async/await pieces interact, and point out anything that behaves incorrectly as a result. Walk through what you'd change and why.