Обучение по обещанию и ожиданию / asyn c с выборкой в ​​другой функции - PullRequest
0 голосов
/ 21 июня 2020

I go с практикой в ​​JS.

На этот раз я пытаюсь сделать то же самое, используя asyn c / await или обещание:

const url = 'https://jsonplaceholder.typicode.com/todos/1';
  1. Asyn c / версия ожидания:
async function getData() {
    const response = await fetch(url);
    const data = await response.json();
    return data;
}

const callGetData = async () => {
    try {
        const data = await getData()
        console.log(data);        
    } catch (error) {
        console.log("Something gone wrong")        
    }
}
Версия обещания
function getData() {
    return new Promise((resolve, reject) => {
        fetch(url)
        .then(res => res.json())
        .then(data => resolve(data))
        .catch(error => reject(error));
    });
}

const callGetData = () => {
    getData()
    .then(data => console.log(data))
    .catch(error => console.log("Something gone wrong"));
}

и, наконец:

callGetData();

Оба фрагмента работают. Мне проще написать версию asyn c / await.

Вопросы:

  • правильно ли я использую обещание в этом случае?
  • есть ли какие-то возможные улучшения?

Спасибо за вашу помощь.

1 Ответ

0 голосов
/ 21 июня 2020

fectch также является обещанием , и вы пытаетесь обернуть обещание внутри нового Promise

еще в версии обещания вы можете просто вернуть его из функции как

getData(url){
 return fetch(url)
 .then(response => response.json()).then(jsonResponse=>jsonResponse)
 .catch(err=>err)
}

now getData возвращает обещание . мы можем просто сделать так:

getData().then(data=>console.log(data))
...