vue 方法按照顺序执行

news2024/11/17 17:50:37

在调用后台方法的时候,由于调用了多个方法,但是执行的时候并没有按照顺序执行,前端需要后台返回的数据,对数据进行页面展示,由于没有按照顺序执行,导致前台页面报错。解决办法采用new Promise单独执行每个方法,并返回resolve。以下是实现方法:

方式一:

    // 获取标签和绘制曲线数据

    mainMethod() {

      // 执行方法1

      this.method1().then((val) => {

        // 方法2

        this.method2().then((val) => {

          // 方法3

          this.method3().then((val) => {

            //  等待方法1、2、3 执行完成后执行方法“lastMethod”

            this.lastMethod();

          });

        });

      });

    },

    // 方法1

    method1() {

      return new Promise((resolve, reject) => {

        // 调用后端接口getMethod1

        getMethod1("CT01").then((response) => {

          this.detail_method1 = response.data;

          resolve( this.detail_method);

        });

      });

    },

    //  方法2

    method2() {

      return new Promise((resolve, reject) => {

        // 调用后端接口getMethod2

        getMethod2("CT02").then((response) => {

          this.detail_method2= response.data;

          resolve(this.detail_method2);

        });

      });

    },

    // 方法3

    method3() {

      return new Promise((resolve, reject) => {

       // 调用后端接口getMethod3

        getMethod3( "CT03").then((response) => {

          this.detail_method3 = response.data;

          resolve(this.detail_method3);

        });

      });

    },

 lastMethod() {

// 需要执行的方法内容

}

方式二:

vue一个页面很多接口时,异步请求的优化
1.使用 Promise.all()

Promise.all() 方法接收一个promise的iterable类型(注:Array,Map,Set都属于ES6的iterable类型)的输入,并且只返回一个Promise实例, 那个输入的所有promise的resolve回调的结果是一个数组。这个Promise的resolve回调执行是在所有输入的promise的resolve回调都结束,或者输入的iterable里没有promise了的时候。它的reject回调执行是,只要任何一个输入的promise的reject回调执行或者输入不合法的promise就会立即抛出错误,并且reject的是第一个抛出的错误信息

     let p1 = new Promise((resolve, reject) => {
          getNumber()
          resolve('成功了p1')
        })

        let p2 = new Promise((resolve, reject) => {
          getName()
          resolve('成功了p2')
        })
    let p3 = new Promise((resolve, reject) => {
      setTimeout(resolve, 100, 'foo');
    });

        Promise.all([p1, p2, p3]).then((result) => {
          console.log(result) // ['成功了p1', '成功了p2', 'foo']
        }).catch((error) => {
        })

Promise.all 在任意一个传入的 promise 失败时返回失败。例如,如果你传入的 promise中,有四个 promise 在一定的时间之后调用成功函数,有一个立即调用失败函数,那么 Promise.all 将立即变为失败。

var p1 = new Promise((resolve, reject) => {
  setTimeout(resolve, 1000, 'one');
});
var p2 = new Promise((resolve, reject) => {
  setTimeout(resolve, 2000, 'two');
});
var p3 = new Promise((resolve, reject) => {
  reject('reject');
});


Promise.all([p1, p2, p3]).then(values => {
  console.log(values);
}).catch(reason => {
  console.log(reason)
});

2.Promise.race(iterable) 方法返回一个 promise,一旦迭代器中的某个promise解决或拒绝,返回的 promise就会解决或拒绝。

var p1 = new Promise(function(resolve, reject) {
            setTimeout(resolve, 500, "one");
        });
        var p2 = new Promise(function(resolve, reject) {
            setTimeout(resolve, 100, "two");
        });

        Promise.race([p1, p2]).then(function(value) {
          console.log(value); // "two"
          // 两个都完成,但 p2 更快
        });

3.Promise.all()与Promise.race()请求时的区别

Promise.all() 适合于后面的异步请求接口依赖前面的接口请求的数据时使用。
Promise.race() 没有先后顺序,那个先请求回来那个先显示

参考链接:

https://www.csdn.net/tags/MtTaEgzsNjAwMzY5LWJsb2cO0O0O.htmlicon-default.png?t=M7J4https://www.csdn.net/tags/MtTaEgzsNjAwMzY5LWJsb2cO0O0O.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/409793.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Vue3父子组件间传参通信

Vue3 父子组件间通信前言一、父传子 defineProps二、子传父 defineEmits三、子组件暴露属性给父组件 defineExpose四、依赖注入Provide / Inject参考前言 本文主要是记录Vue3在setup语法糖下的父子组件间传参的四种方式 Vue3TypeScript 一、父传子 defineProps 父组件传值给…

使用TS对axios的进行简单封装

1.安装axios npm i axios2.在合适路径下新建request.ts(名称可随意),例如可以在项目的src下创建utils文件夹创建request.ts 3.导入axios并创建axios实例 //引入axios import axios from axios//使用指定配置创建axios实例 const instance …

css字体加粗(dw怎么在css里字体加粗)

css怎么设置前3个字加粗 举个例子: 比如都在一个标签里 这里是文字内容文字内容文字内容文字内容文字内容文字内容文字内容文字内容 这里是文字内容文字内容文字内容文字内容文字内 这里是文字内容文字内容文字内容文字内容文字内 .test p span{font-weight:bold;} …

Linux 下使用 C++ 实现的 Web 文件服务器

项目地址: Github:https://github.com/shangguanyongshi/WebFileServer 在学习完成《TCP/IP 网络编程》和《Linux高性能服务器编程》后,阅读了一些Web服务器的相关代码,自动动手使用 C11 实现了这个 Linux 下简单 Web 文件服务器&…

使用 cpolar 内网穿透将本地 web 网站发布上线(无需服务器)

前言 当我们以本地电脑做服务器搭建web网站时,如何将它发布到互联网上,实现公网用户都可以访问内网的web网站就变得很重要。 这里我们以macOS系统自带的Apache为例,在本地启用Apache服务器,并通过cpolar内网穿透将其暴露至公网&…

vue国际化(多语言)

方法1:用 js-cookie 包 并且挂载在 main.js 上 1、安装 vue-i18n js-cookie 插件 npm install vue-i18n -S npm install js-cookie --save2、去检查一下你安装的 i18n 版本是不是 8.26.5 3、在 main.js 中引入 import VueI18n from vue-i18n; import cookie fro…

Echarts legend属性使用

Echarts的legend属性是对图例组件的相关配置 而legend就是Echarts图表中对图形的解释部分: 其中legend自身常用的配置属性如下: orient 设置图例的朝向 属性值: vertical // 垂直显示 或者 horizontal // 水平显示 legend: {orient: ver…

JavaScript——WebAPI(DOM)知识小结

目录 什么是WebAPI DOM API DMO树 DOM树: 选中页面元素: 事件 事件的三要素: 获取/修改元素内容 获取/修改元素属性 获取/修改表单元素属性 获取/修改样式属性 新增元素 删除元素 什么是WebAPI WebAPI是浏览器给js提供的功…

前后端 token 的使用

嗷呜, 预感又是一篇长的水文, 但是内心好激动哦 适用于前端(了解 node express 框架的人看), 想要了解后端的人看 好了, 开始废话模式 前后端 token 的使用 最近在做一个后台管理项目, 但是我一个卑微的前端我去哪里找接口的, 没有, 只好我自己写 哎, 我能有什么坏心思呢, 没有…

【React】使用Next.js构建并部署个人博客

👉 TypeScript学习:TypeScript从入门到精通 👉 蓝桥杯真题解析:蓝桥杯Web国赛真题解析 👉 个人简介:一个又菜又爱玩的前端小白🍬 👉 你的一键三连是我更新的最大动力❤️&#xff01…

Server Tomcat v9.0 Server at localhost failed to start问题

Server Tomcat v9.0 Server at localhost failed to start问题解决办法。 在我们使用eclipse启动Tomcat时,有时会出现Server Tomcat v9.0 Server at localhost failed to start 的错误提示,导致无法成功启动,下面给出出现这种问题的简单解决…

Python开发自定义Web框架

文章目录开发自定义Web框架1.开发Web服务器主体程序2.开发Web框架主体程序3.使用模板来展示响应内容4.开发框架的路由列表功能5.采用装饰器的方式添加路由6.电影列表页面的开发案例开发自定义Web框架 接收web服务器的动态资源请求,给web服务器提供处理动态资源请求…

Web项目(Vue)部署到阿里云服务器【超详细】

超详细Vue项目部署篇!!! 小白的部署之路 前段时间白嫖了一年的阿里云服务器,想着手上有个项目,那就部署上去吧。找了很多教程,没有一篇是完整细致的,对于小白的我来说太难了,然后就…

最全面的SpringBoot教程(三)——SpringBoot Web开发

前言 本文为SpringBoot Web开发相关内容介绍,下边将对静态资源管理(包括:静态资源访问,静态资源前缀,webjar,首页支持),请求参数处理(包括:Rest风格&#xff…

【微信小程序】-- 自定义组件 - 父子组件之间的通信(三十八)

💌 所属专栏:【微信小程序开发教程】 😀 作  者:我是夜阑的狗🐶 🚀 个人简介:一个正在努力学技术的CV工程师,专注基础和实战分享 ,欢迎咨询! &…

也许是全网最全的 Angular 新手入门指南

文章目录Angular概述Angular程序架构Angular优势angular/cli脚手架文件加载顺序项目目录结构Angular模块NgModule 装饰器内置模块自定义模块模块的tipsAngular组件Component 元数据数据绑定脏值检测父子组件通讯投影组件Angular指令内置属性型指令内置结构型指令指令事件样式绑…

若依框架(前后端分离)打war包部署到linux

一、前端部署 1.找到ruoyi-ui目录。 2.安装依赖。 npm install 3.执行以下操作,解决 npm 下载速度慢的问题。 npm install --registryhttps://registry.npmmirror.com 4.修改vue.config.js,若后端采用的是默认8080端口,则不用修改,默认就是…

2023最新最全vscode插件精选

文章简介 本文介绍最新、最实用、最强大的 vscode 精选扩展。好用的扩展,犹如神兵利器,帮助程序员在代码的世界中,所向披靡,战无不胜! 作者介绍 随易出品,必属精品,只写有深度,有质…

vue 路由钩子

路由钩子分为三种 全局钩子: beforeEach、 afterEach、beforeResolve单个路由里面的钩子: beforeEnter组件路由:beforeRouteEnter、 beforeRouteUpdate、 beforeRouteLeave 它的三个参数: to: (Route路由对象) 即将要进入的目标…

【前端知识体系梳理(三)】Diff策略

​ 目录 🍉前言 🍉传统Diff算法 🍉React Diff 🍓🍓🍓1、tree diff 🍓🍓🍓2、component diff 🍓🍓🍓3、element diff &#x1…