javascript - 异步/等待回调后如何为全局变量赋值
问题描述
JSFiddle example https://jsfiddle.net/xo15vet6/
我想将异步函数结果处理到另一个函数,一旦用户单击保存按钮我应该处理全局变量值,我该如何实现。
解决方案
对于我所看到的,您应该已经在执行此操作,如果您想将值分配给 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()那。
推荐阅读
- assembly - 汇编 jmp 到不存在的行
- agda - 单价公理是内射的吗?
- javascript - Javascript getElementById 但保留旧值
- android - 服务 stopForeground(false) 不应该删除通知
- docker - Docker 撰写未安装在 Windows 容器上的卷
- jquery - 将路径字符串传递给 jquery 函数
- electron - 如何在 BrowserWindow 中加载特定的 html 文件
- openshift - Openshift Web 控制台 - 运行扩展脚本不起作用
- charles-proxy - 查尔斯没有显示表格“连接来自”
- ocaml - 来自 utop 的类型定义的源位置