javascript - 在变量上保存异步/等待响应

标签 javascript ecmascript-6 es6-promise

我正在尝试使用 async/await 和 try/catch 来理解异步调用。

在下面的示例中,如何将我的成功响应保存到一个可以在其余代码中使用的变量?

const axios = require('axios');
const users = 'http://localhost:3000/users';

const asyncExample = async () =>{
    try {
        const data = await axios(users);
        console.log(data); //200
    }
    catch (err) {
        console.log(err);
    }
};

//Save response on a variable
const globalData = asyncExample(); 
console.log(globalData) //Promise { <pending> }

最佳答案

1) 从您的asyncExample 函数返回一些内容

const asyncExample = async () => {
  const result = await axios(users)

  return result
}

2) 调用该函数并处理其返回的 Promise:

;(async () => {
  const users = await asyncExample()
  console.log(users)
})()

这就是为什么你应该这样处理它:

  • 你不能做顶级的await(尽管有a proposal); await 必须存在于 async 函数中。

但是我必须指出,您的原始示例不需要 async/await 根本;因为 axios 已经返回一个 Promise,你可以简单地做:

const asyncExample = () => {
  return axios(users)
}

const users = await asyncExample()

关于javascript - 在变量上保存异步/等待响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48327559/

相关文章:

javascript - 简单的 ES6 Promise 问题 - 交换了解析和拒绝参数

javascript - 取消 Vanilla ECMAScript 6 Promise 链

javascript - Bluebird 的 promise 链数组

javascript - Typescript 编译器不检查方法返回类型的有效性

javascript - AllcountJS 入门指南的问题

javascript - 使用 RequireJS 包含一个使用 ES6 语法定义的类

javascript - 我应该如何处理针对我的对象模型的格式不正确的 JSON 响应错误? [ES6]

javascript - 如何将从后端渲染的参数传递给 angular2 bootstrap 方法

javascript - 来自字符串的 Jquery JSON 数组

javascript - 获取 ES6 类的静态列表