как я могу присвоить значение глобальной переменной после асинхронного / ожидающего обратного вызова - PullRequest
0 голосов
/ 03 апреля 2020
JSFiddle example https://jsfiddle.net/xo15vet6/

Я хочу обработать результат функции Asyn c в другой функции. После того, как пользователь нажмет кнопку «Сохранить», я должен обработать значение глобальной переменной, как мне его достичь.

Ответы [ 2 ]

0 голосов
/ 03 апреля 2020

Для того, что я вижу, вы уже должны это делать, в случае, если вы хотите присвоить значение для finalMovies, происходит следующее: второй console.log выполняется сразу после вызова этой асинхронной функции, поэтому он будет выполнен, а затем go перейдет на следующую строку (console.log), но console.log, который находится в .then, попадет туда только в случае разрешения операции asyn c. Если он каким-то образом отвергает, он даже не напечатает эту строку. Потому что это будет go к .catch функции asyn c.

    let finalMovies = "";
        async function getMovieAsync() {
            var response = await fetch('https://www.omdbapi.com/?s=batman&y=&plot=short&r=json');
            var movies = await response.json();
            return movies;
        }
async function getMovies(){

        try{
           finalMovies = await getMovieAsync();
           console.log("final movies', finalMovies);
        }catch(exception){
           console.log('Something went wrong')
        }
}

если вы обратите внимание, я изменил второй журнал консоли, потому что если вы сделаете «строку» + (что-то, что может быть объектом или массивом объекта), он напечатает вам [объектный объект], потому что для этого он по умолчанию запускает toString ().

0 голосов
/ 03 апреля 2020

getMovieAsync - это функция, а не обещание

Я думаю, что это будет работать:

let finalMovies = "";
async function getMovieAsync() {
    const response = await fetch('https://www.omdbapi.com/?s=batman&y=&plot=short&r=json');
    const movies = await response.json();
    return movies;
}

finalMovies = getMovieAsync();
console.log("final movies " + finalMovies);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...