首页 > 解决方案 > 异步/等待回调后如何为全局变量赋值

问题描述

JSFiddle example https://jsfiddle.net/xo15vet6/

我想将异步函数结果处理到另一个函数,一旦用户单击保存按钮我应该处理全局变量值,我该如何实现。

标签: javascriptangulartypescript

解决方案


对于我所看到的,您应该已经在执行此操作,如果您想将值分配给 finalMovies,则发生的情况是第二个 console.log 在调用该异步函数后立即执行,因此它将执行然后转到下一行(console.log),但只有在异步操作解决时,.then 中的 console.log 才会到达那里。如果它以某种方式拒绝它甚至不会打印该行。因为它会转到 async 函数的 .catch 。

    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')
        }
}

如果您注意我更改了第二个控制台日志,因为如果您执行“字符串”+(可能是对象或对象数组),它将为您打印 [object Object],因为它将运行默认的 toString()那。


推荐阅读