js 等待接口访问成功后执行指定代码【3种方法】(含async await Promise的使用)

简介: js 等待接口访问成功后执行指定代码【3种方法】(含async await Promise的使用)

方案1:在.then中执行代码

适用场景:访问接口后,执行的代码固定不变

    getList() {
      this.$http({
        method: "get",
        url: "http://127.0.0.1:4523/mock/430173/user/list",
        params: params,
      }).then((res) => {
        this.dataList = res.data.list;
        // 执行指定代码
        console.log("搜索数据成功!");
      });
    },

缺点:

  1. 目标代码嵌套过深
  2. 访问接口的代码不便于复用

方案2:通过回调函数执行代码

将目标代码作为函数的参数传入

适用场景:访问接口后,不同触发条件需要执行不同的代码

优点:方便接口代码的封装复用

    // 初始化
    init() {
      let initSucInfo = () => {
        console.log("初始化数据成功!");
      };
      this.getList({}, initSucInfo);
    },
    // 搜索
    search() {
      let params = {
        name: "朝阳",
      };

      let searchSucInfo = () => {
        console.log("搜索数据成功!");
      };
      this.getList(params, searchSucInfo);
    },

    // 函数封装——访问接口成功后,执行传入的callBack函数
    getList(params = {}, callBack) {
      this.$http({
        method: "get",
        url: "http://127.0.0.1:4523/mock/430173/user/list",
        params: params,
      }).then((res) => {
        this.dataList = res.data.list;
        if (callBack) {
          // 执行对应的代码
          callBack();
        }
      });
    },

方案3:使用async await Promise

优点:代码流程清晰,也方便接口代码的封装复用

要点:

  1. 使用await 的函数前需加async
  2. await 后需跟一个 Promise 对象(axios请求就是一个Promise 对象),所以范例代码中getList方法必须 return this.$http
  3. 若想await 返回接口获取的数据,需在接口的.then中
return Promise.resolve(res);
 

并定义一个变量,接收await 的返回值

let res = await this.getList(params);

目标代码中不使用接口返回的数据

    // 搜索
    async search() {
      let params = {
        name: "朝阳",
      };

      await this.getList(params);
      // 执行目标代码
      console.log("搜索数据成功!");
    },

    getList(params = {}) {
      return this.$http({
        method: "get",
        url: "http://127.0.0.1:4523/mock/430173/user/list",
        params: params,
      }).then((res) => {
        this.dataList = res.data.list;
        console.log("访问接口成功!");
      });
    },

目标代码中使用接口返回的数据

    // 搜索
    async search() {
      let params = {
        name: "朝阳",
      };

      let res = await this.getList(params);
      // 执行目标代码
      console.log("接口返回的数据为:" + res);
    },

    getList(params = {}) {
      return this.$http({
        method: "get",
        url: "http://127.0.0.1:4523/mock/430173/user/list",
        params: params,
      }).then((res) => {
        this.dataList = res.data.list;
        console.log("访问接口成功!");
        return Promise.resolve(res);
      });
    },
目录
相关文章
|
10天前
|
前端开发 JavaScript 开发者
Async 和 Await 是基于 Promise 实现
【10月更文挑战第30天】Async和Await是基于Promise实现的语法糖,它们通过简洁的语法形式,借助Promise的异步处理机制,为JavaScript开发者提供了一种更优雅、更易于理解和维护的异步编程方式。
17 1
|
10天前
|
JavaScript
原生js炫酷随机抽奖中奖效果代码
原生js随机抽奖是一个炫酷的根据数据随机抽奖的代码,该网页可进行随机抽取一个数据,页面动画高科技、炫酷感觉的随机抽奖效果,简单好用,欢迎下载!
24 3
原生js炫酷随机抽奖中奖效果代码
|
10天前
|
JSON 前端开发 JavaScript
浅谈JavaScript中的Promise、Async和Await
【10月更文挑战第30天】Promise、Async和Await是JavaScript中强大的异步编程工具,它们各自具有独特的优势和适用场景,开发者可以根据具体的项目需求和代码风格选择合适的方式来处理异步操作,从而编写出更加高效、可读和易于维护的JavaScript代码。
18 1
|
15天前
|
JavaScript 前端开发 开发者
如何在 Visual Studio Code (VSCode) 中使用 ESLint 和 Prettier 检查代码规范并自动格式化 Vue.js 代码,包括安装插件、配置 ESLint 和 Prettier 以及 VSCode 设置的具体步骤
随着前端开发技术的快速发展,代码规范和格式化工具变得尤为重要。本文介绍了如何在 Visual Studio Code (VSCode) 中使用 ESLint 和 Prettier 检查代码规范并自动格式化 Vue.js 代码,包括安装插件、配置 ESLint 和 Prettier 以及 VSCode 设置的具体步骤。通过这些工具,可以显著提升编码效率和代码质量。
162 4
|
13天前
|
JavaScript 前端开发 开发者
如何在 Visual Studio Code (VSCode) 中使用 ESLint 和 Prettier 检查代码规范并自动格式化 Vue.js 代码
随着前端开发技术的快速发展,代码规范和格式化工具变得尤为重要。本文介绍如何在 Visual Studio Code (VSCode) 中使用 ESLint 和 Prettier 检查代码规范并自动格式化 Vue.js 代码。通过安装和配置这些工具,可以确保代码风格一致,提高代码质量和可读性。
41 1
|
30天前
|
JavaScript 前端开发 开发者
掌握Node.js中的异步编程:从回调到async/await
Node.js的异步编程模型是其核心特性之一,它使得开发者能够构建高性能和高并发的应用程序。本文将带你从Node.js的异步编程基础开始,逐步深入到回调函数、Promises、以及最新的async/await语法。我们将探讨这些异步模式的原理、使用场景和最佳实践,并通过实例代码展示如何在实际项目中应用这些概念。
|
2月前
|
前端开发 JavaScript 数据库连接
掌握 JavaScript 异步编程:从回调到 Async/Await
在现代 JavaScript 开发中,异步编程是处理非阻塞操作的关键技术。本文从早期的回调函数讲起,逐步过渡到 Promise 和 ES2017 的 async/await 语法,展示了异步编程如何变得更加简洁和强大。通过实用的技巧和最佳实践,帮助开发者避免常见陷阱,提升代码效率和可靠性。
|
1月前
|
前端开发 JavaScript 开发者
JavaScript 中的异步编程:深入了解 Promise 和 async/await
【10月更文挑战第8天】JavaScript 中的异步编程:深入了解 Promise 和 async/await
|
28天前
|
JSON 前端开发 JavaScript
探索JavaScript中的Async/Await:简化异步编程的利器
【10月更文挑战第12天】探索JavaScript中的Async/Await:简化异步编程的利器
16 0