Как вернуть значение из then

Есть функция

function get_score() {
    return new Promise(resolve => { 
    fetch(this.api_url)
        .then(res => res.json())
        .then(json => resolve(json[0]) );
});   

И чтобы использовать ее в коде нужно:

get_score()
    .then(score => console.log(score))

Но я хотел бы чтобы при вызове мне не было необходимости приписывать then, чтобы get_score() просто возвращал score без then => score.


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

Автор решения: MoloF

Воспользуйтесь ASYNC/AWAIT

function get_score() {
    return new Promise(resolve =>
        setTimeout(() => resolve(Math.random()), 1000)
    );
}

(async function(){
    const result = await get_score();
    
    console.log(result);
})();


Так же можно видоизменить вашу функцию get_score()

const api_url = 'https://api.themoviedb.org/3/discover/movie?api_key=15d2ea6d0dc1d476efbca3eba2b9bbfb';

async function get_score() {
    try {
        const response = await fetch(api_url);
        const result = await response.json();
        return result;
    }
    catch(error) {
        console.log(error);
    }
};


(async function() {
    const getScore = await get_score(); 
    console.log(getScore);
})();

→ Ссылка