CodShot
JavaScript Public

Modern JavaScript User Loader

Loads and manages users asynchronously from an API, providing methods to find users by ID and render the user list in the DOM.

JavaScript
let users = [];
let isLoading = false;

class User {
  constructor(id, name, email) {
    this.id = id;
    this.name = name;
    this.email = email;
  }

  getDisplayName() {
    return `${this.name} (${this.email})`;
  }
}

const loadUsers = async (callback) => {
  isLoading = true;
  try {
    const response = await fetch('/api/users');
    isLoading = false;
    if (!response.ok) {
      throw new Error('Could not load users.');
    }
    const data = await response.json();
    users = data.map(({ id, name, email }) => new User(id, name, email));
    if (callback) callback(null, users);
  } catch (error) {
    isLoading = false;
    if (callback) callback(error.message);
  }
};

const findUserById = (id) => users.find(user => user.id === id) || null;

const renderUsers = () => {
  const container = document.getElementById('user-list');
  if (!container) return;
  container.innerHTML = users
    .map(user => `
      <div class="user">
        <strong>${user.name}</strong>
        <span>${user.email}</span>
      </div>
    `).join('');
};

loadUsers((error, data) => {
  if (error) {
    console.error(`Error: ${error}`);
    return;
  }
  console.log(`Loaded ${data.length} users.`);
  renderUsers();
});

Snippet actions

Pluto
Pluto
Updated: 2026-09-07 14:55
Public snippets
0
Forks
CodShot AI Help
Ask about CodShot features, plans, workspace, AI limits, referrals, and public help topics.
Hi! I can help you understand how CodShot works. What would you like to know?
For account-specific or sensitive issues, please open a support ticket. Open support