Use async/await with fetch() for clean async code
async function fetchUser() {
const response = await fetch('https://api.example.com/user');
const data = await response.json();
return data;
}async function getPosts() {
try {
const response = await fetch('https://jsonplaceholder.typicode.com/posts');
const posts = await response.json();
return posts.slice(0, 3);
} catch (error) {
console.error('Error:', error);
}
}
// Usage
getPosts().then(console.log);async function fetchData(url) {
try {
const response = await fetch(url);
if (!response.ok) throw new Error('Network error');
return await response.json();
} catch (error) {
console.error('Fetch failed:', error);
return null;
}
}const response = await fetch(url, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': 'Bearer token'
},
body: JSON.stringify({ name: 'John' })
});Avoid using XMLHttpRequest and nested callbacks
// DON'T DO THIS
var xhr = new XMLHttpRequest();
xhr.open('GET', 'https://api.example.com/data');
xhr.onreadystatechange = function() {
if (xhr.readyState === 4) {
var data = JSON.parse(xhr.responseText);
// handle data
}
};
xhr.send();✓ Works in all modern browsers (ES2017+)