弹框确认按钮,请求两个接口跳转刷新页面,并使用async和await将异步改成同步的数据?

news/2024/7/10 3:02:41 标签: javascript, 前端, ui, vue, elementui

前景:公司前后端不分离项目,使用的框架element-ui较低版本的,弹框确定按钮加载动态按钮的loading。

//插件
npm i element-ui -S

效果图:

在这里插入图片描述

在这里插入图片描述
代码:

<template>
	<div>
		<el-button type="text" @click="dialogVisible = true">点击打开 Dialog</el-button>
		<!-- :before-close="handleClose" 绑定一个函数:handleClose -->
		<el-dialog title="提示" :visible.sync="dialogVisible" width="30%" :before-close="handleClose">
			<span>这是一段信息</span>
			<span slot="footer" class="dialog-footer">
				<el-button @click="dialogVisible = false">取 消</el-button>
				<el-button type="primary" @click="dialogVisible = false">确 定</el-button>
			</span>
		</el-dialog>
	</div>
</template>
 
<script>
	export default {
		data() {
			return {
				dialogVisible: false,//默认是隐藏弹框
			};
		},
		methods: {
		//1.第一种操作:
		//before-close 仅当用户通过点击关闭图标或遮罩关闭 Dialog 时起   效。如果你在 footer 具名 slot 里添加了用于关闭 Dialog 的按钮,那么可以在按钮的点击回调函数里加入 before-close 的相关逻辑
		//	handleClose(done) {//关闭弹框事件
		//		this.$confirm('确认关闭?')
		//			.then(_ => {
		//				// 关闭方法-上方传的参数done
		//				done();
		//			})
		//			.catch(_ => {});
		//	},
		//2.第二种操作:
			handleClose(done) {//关闭弹框事件
			 //在关闭弹窗事件的时候对多选事件清除操作.注意是项目有这个需求的时候。
			 //单选的时候,不点击确定按钮下,关闭图标的操作事件
			 this.userInfo="";//清除单选双向数据绑定
			 this.dialogVisible=false;//关闭弹窗
		    },
		}
	};
</script>

在这里插入图片描述

例子:
加载loading效果,并使用async await同步操作,确定按钮加载2个api的时候的,可以使用定时器setTimeout()。

setTimeout和setInterval区别:

setTimeout和setInterval都属于JS中的定时器,可以规定延迟时间再执行某个操作,不同的是setTimeout在规定时间后执行完某个操作就停止了,而setInterval则可以一直循环下去。

async、await详解:

1.同步代码编写方式:Promise使用then函数进行链式调用,一直点点点,是一种从左向右的横向写法;async/await从上到下,顺序执行,就像写同步代码一样,更符合代码编写习惯;

2.同步代码和异步代码可以一起编写:使用Promise的时候最好将同步代码和异步代码放在不同的then节点中,这样结构更加清晰;async/await整个书写习惯都是同步的,不需要纠结同步和异步的区别,当然,异步过程需要包装成一个Promise对象放在await关键字后面。

3.async和await的基础使用

async/awiat的使用规则:

async 表示这是一个async函数, await只能用在async函数里面,不能单独使用
async 返回的是一个Promise对象,await就是等待这个promise的返回结果后,再继续执行
await 等待的是一个Promise对象,后面必须跟一个Promise对象,但是不必写then(),直接就可以得到返回值

...其他代码省略了 弹窗的代码,请复制上面的。
<el-button type="primary" :loading="btnLoading"   @click="submit">确定</el-button>
<script>
	export default {
	  data(){
	     return {
				btnLoading: false,
				//默认要设置为 loading 状态  true是加载 false是不加载状态
		  };
      },
      methods: {
         //事件
         publicApiEvents(){//公共api
         $.post("cm/Controller.php?LastSeason",
                {
                    param:{
                        ssId : id
                    }
                },
                function(data,status) {
                //解析因为后台返回的数据不标准格式,才需要解析,标准的就不用了
                //$.parseJSON() 函数用于将符合标准格式的的JSON字符串转为与之对应的JavaScript对象。
                 const obj = jQuery.parseJSON(data);
                 //可以对拿到的数据做操作obj返回的是成功code==='0'
                 }
             });    
         },
      async  submit(){//确定事件
          this.btnloading = true;//加载的loading关闭
           //调用第一个接口
         await  this.publicApiEvents()
           //第二个接口
              $.post("cm/aController.php?aLastSeason",
                {
                    param:{//我这里参数是可以全局获取到
                        ssId : id,
                        season:season
                    }
                },
                function(data,status) {
                //解析因为后台返回的数据不标准格式,才需要解析,标准的就不用了
                //$.parseJSON() 函数用于将符合标准格式的的JSON字符串转为与之对应的JavaScript对象。
                 const obj = jQuery.parseJSON(data);
                 //可以对拿到的数据做操作obj返回的是成功code==='0'
                     if(obj.code==='0'){
                    setTimeout(() => {
                     this.btnloading = false;//开始加载
                     //跳转新页面并刷新页面
                     window.location.href = '/cm/scoreDetail.php?ssId=' +id; 
                    }, 700);
                 }
             });    
          
         }

       }
     }

</script>

总结:记录一下,少走弯路!!!


http://www.niftyadmin.cn/n/5053.html

相关文章

一篇博文,带你入门数据库SQL语言

目录 &#x1f4d6;前言 &#x1f388;SQL的分类 &#x1f3a8;数据库的分类 ✨SQL的基础操作 ⚽SQL常用数据类型 &#x1f3c9;数据库的操作 ⚾创建数据库 &#x1f94e;显示数据库 &#x1f3c0;使用数据库 &#x1f3d0;删除数据库 &#x1f37f;表的操作 &…

基于深度学习的宋词生成

《自然语言处理》课程报告 摘 要 宋词是一种相对于古体诗的新体诗歌之一&#xff0c;为宋代儒客文人智慧精华&#xff0c;标志宋代文学的最高成就。宋词生成属于自然语言处理领域的文本生成模块&#xff0c;当前文本生成领域主要包括基于语言模型的自然语言生成和使用深度学习…

gcc对void型指针的类型检查有问题?

背景 前一段时间遇到一个问题&#xff0c;我调用了一个隔壁部门的库&#xff0c;这个库在调用前要创建context&#xff0c;程序退出前要销毁context&#xff0c;问题是销毁的时候&#xff0c;出现段错误了。 经过一番定位&#xff0c;发现是库的销毁接口跟库的常规处理接口稍有…

[附源码]java毕业设计超市库存管理系统

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

求求你别在用if进行参数校验了!!!

在日常工作开发中&#xff0c;难免会遇到各种各样的参数校验问题&#xff0c;大多数情况下我们都是在Controller层进行手动校验&#xff0c;但是当需要校验的参数比较多时&#xff0c;就会出现一大堆重复且枯燥的代码&#xff0c;每当出现这种情况是&#xff0c;想想都会头疼&a…

(CVE-2019-0227)Axis<=1.4 远程命令执行漏洞

结尾附上本文的环境和PoC 一、漏洞介绍 漏洞本质是管理员对AdminService的配置错误。当enableRemoteAdmin属性设置为true时&#xff0c;攻击者可以构造WebService调用freemarker组件中的template.utility.Execute类&#xff0c;远程利用AdminService接口进行WebService发布&am…

Git实战之git客户端上传文件到github

Git实战之git客户端上传文件到github 一、Git介绍1.Git简介2.版本控制系统的分类二、检查本地系统版本三、windows安装Git客户端1.进入windows的powershell2.安装git客户端3.检查安装结果四、创建本地Git仓库1.创建git仓库2.选择目录3.进入本地代码仓库3.添加ssh密钥到github五…

【数据库08】数据库物理存储系统的选型与管理

前 言 &#x1f349; 作者简介&#xff1a;半旧518&#xff0c;长跑型选手&#xff0c;立志坚持写10年博客&#xff0c;专注于java后端 ☕专栏简介&#xff1a;相当硬核&#xff0c;黑皮书《数据库系统概念》读书笔记&#xff0c;讲解&#xff1a; 1.数据库系统的基本概念(数据…