Почему обработка промиса через acync-await не выдаёт массив объектов как через обработку .then?

Начал изучать AJAX. Вопрос в следующем: почему через асинхронную функцию при декодирования нашего response мы получаем один объект { id: 101 } - и откуда он вообще читается? А при обработке через .then мы получаем полноценный массив объектов как с ссылки? Я ожидал, что асинхронная функцию также выдаст массив объектов с ссылки, но он выдаёт объект, который я понятия не имею откуда берет.

fetch же должен в обоих случаях работать одинаково? await просто ждёт завершения фукнции fetch и всё, ничего не добавляет. А сам fetch возвращает промис, который хранит одинаковый результат объекта Response в обоих случаях.

Обработка через .then:

const POSTS_URL = 'https://jsonplaceholder.typicode.com/posts';
 
const result = fetch(POSTS_URL, {
    method: 'GET',
})

result
    .then(response => response.json())
    .then(result => console.log(result));

Через асинхронную функцию:

const POSTS_URL = 'https://jsonplaceholder.typicode.com/posts';
const createNewPost = async () => {
    try {
        isLoading = true;
        const response = await fetch(POSTS_URL, {
            method: 'POST',
        })
        if (!response.ok) {
            throw new Error('Ошибка запроса');
        }

        const result = await response.json();
        console.log('result', result);
    } catch (error) {
        console.log(error);
    } finally {
        isLoading = false;
    }
   
};
createNewPost();


Ответы (1 шт):

Автор решения: Михаил В

В первом случае Вы запрашиваете публикации через GET, во втором случае Вы видимо добавляете новую публикацию, потому что POST. соответственно id: 101 - это типа код добавленного поста. Если Вам нужно получить список постов, замените POST на GET

const POSTS_URL = 'https://jsonplaceholder.typicode.com/posts';
const createNewPost = async () => {
    try {
        isLoading = true;
        const response = await fetch(POSTS_URL, {
            method: 'GET',
        })
        if (!response.ok) {
            throw new Error('Ошибка запроса');
        }

        const result = await response.json();
        console.log('result', result);
    } catch (error) {
        console.log(error);
    } finally {
        isLoading = false;
    }
   
};
createNewPost();

→ Ссылка