我想使用await将响应保存到一个变量中。我需要将该响应存储在一个变量中,并在下一个代码流中使用它。我不想只在函数大括号内存储和使用变量。在下面的代码中,只编写了一个console.log,但存在许多事件。我不想使用fetch and then。我想使用async/await解决它。但我做的每件事都是错的我做错了什么
尝试1
运行=〉未捕获的语法错误:await仅在异步函数和模块的顶级主体中有效
var resp = await fetch(`https://www.yahoo.com/manifest_desktop_us.json`);
var jobj = await resp.json();
var display = jobj.display;
console.log(display); //I need display value
试试2
Run =〉undefined
async function abc(url) {
var resp = await fetch(url);
var jobj = await resp.json();
return jobj;
}
var url = 'https://www.yahoo.com/manifest_desktop_us.json';
var jobj = abc(url);
//var jobj = async() => await abc(url); //undefined
var display = jobj.display;
console.log(display); //I need display value
3条答案
按热度按时间ljsrvy3e1#
你需要移动
async
函数中与async操作相关的 whole 逻辑。你可以使用一个匿名的async函数:
或者,由于异步函数返回
Promise
,因此您也可以在then
调用中获取值:au9on6nz2#
您的第一次尝试非常接近于让它工作,错误
Uncaught SyntaxError: await is only valid in async functions and the top level bodies of modules
意味着await只能在异步函数中使用,因此您需要 Package 它另外,您还需要绕过cors,为了便于演示,我添加了corsURL,但在您的生产应用中,您必须在全局HTTP请求示例中处理,或者拥有自己的后端URL。
9rnv2umw3#
您可以使用
then
。