5、Async await(等待异步)、函数的防抖和节流、模块化

一、Async await(等待异步)

  • Async去声明函数,返回一个promise对象,await在声明的函数里面使用
function fn_1() {
    return 'fn_1'
}
function fn_2() {
    return new Promise((reslove) => {
        setTimeout(() => {//因为定时器是异步的 
            num = 10
            return reslove('fn_2')
        }, 2000)
    })
}
function fn_3() {
    console.log(num);
    return 'fn_3'
}
// async必须声明的是一个function,await必须在声明的函数内部使用。
async function fn() {
    console.log(fn_1());
    console.log(await fn_2());//等到定时器完成后 执行
    console.log(fn_3());
}
fn()

image-20240312111309108

二、函数的防抖

  • 作用:防止短时间内高频繁调用同一接口的方法。
  • 防抖:设置延时器,短时间高频率触发,只有最后一次触发成功
var timer = null
document.getElementById('btn').onclick = function () {
    clearTimeout(timer)
    timer = setTimeout(() => {
        console.log(1);
    }, 1000)
}

三、函数的节流

  • 作用:防止短时间内高频繁调用同一接口的方法。
  • 节流:设置状态锁,短时间内高频率触发,只有第一次成功
var key = false
document.getElementById('btn').onclick = function () {
    if (!key) {
        key = true
        setTimeout(() => {
        console.log(1);
            key = false
        }, 2000)
    }
}

四、模块化

1、vscode 安装 live sever

2、导出 export

  • 导出
//函数前面加export
export function getUserInfo() {
	console.log('登录了')
}
  • 批量导出 {}
export {getUserInfo,num,login}
  • 默认导出 只能用一次
export default {
	num:10,
	say() {
		console.log("say")
	}
}

3、导入 import

  • 导入 import { } form "./login.js "
import {getUserInfo,num as myNum,login} from './login.js'
  • 重命名导入 as

  • 整体导入 *as 变量名

import * as obj from './login.js'
  • 默认导入
import a from './login.js'
console.log(a);
image-20240312113505985 image-20240312113546190

4、高内聚,低耦合

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

使用gnvm下载nodejs和npm

目录 前言 一、下载gnvm 二、利用gnvm下载nodejs 三、下载对应版本的npm 四、gnvm常用的命令 总结 前言 由于之前下载的版本过低,需要升级版本。但在使用gnvm升级node版本时遇到了一系列的问题,索性就把nodejs全部删除,重新用gnvm在下…

【保姆级教程】JDK安装与环境变量配置

文章目录 第一步:下载JDK(以1.8为例)第二步:安装第三步:找到默认安装目录第四步:配置环境变量(win10为例) 大家可能会遇到的疑问:一个电脑可以安装多个版本的jdk没有问题…

抽样算法——【数据科学与工程算法基础】

一、前言 这是课程的第二章节——抽样算法,主要分为三类。 详情可参考: 数据科学的算法基础——学习记录跳转中心 二、正篇 1.系统抽样 课本只介绍了最简单的——等距抽样。 直线等距抽样(Nn*k):即总体个数可以被抽…

swiftUI 中如何忽略safeArea

swiftUI 中如何忽略safeArea 不管是UIKit和swiftUI为了能适配更多设备,所以出来了一个safeArea的设定。那如何把我们的控件放到safeArea里面呢 答案就是ignoresSafeArea ignoresSafeArea 通过把Text空间放到一个VStack下然后给VStack设置宽高无限大,就…

如何选择合适的IP代理,如何为网络爬虫设置代理

目录 前言 1. 代理类型的选择 2. 代理速度 3. 代理稳定性 4. 代理的匿名性 5. 代理的地理位置 总结 前言 在进行网络爬虫任务时,为了避免被目标网站封禁IP或限制访问频率,我们通常会使用代理来隐藏真实的IP地址。选择合适的IP代理对于爬虫的成功…

1. DDPM模型概述

1. DDPM模型概述 扩散模型(DM,Diffusion Model)是一类生成模型,常见的生成模型还有GAN和VAE。扩散模型分为前向阶段和逆向阶段,在前向阶段中逐步向数据中添加噪声,直至数据变成完全的高斯噪声,…

Redis高可用之哨兵模式和集群模式

Redis高可用 Redis哨兵高可用 概述 sentinel哨兵是特殊的redis服务,不提供读写服务,主要用来监控redis实例节点。 哨兵架构下client端第一次从哨兵找出redis的主节点,后续就直接访问redis的主节点 不会每次都通过sentinel代理访问redis的主…

网络地址转换协议NAT

网络地址转换协议NAT NAT的定义 NAT(Network Address Translation,网络地址转换)是1994年提出的。当在专用网内部的一些主机本来已经分配到了本地IP地址(即仅在本专用网内使用的专用地址),但现在又想和因…

YOLOv8改进 | 注意力机制 | 添加YOLO-Face提出的SEAM注意力机制优化物体遮挡检测(附代码 + 修改教程)

一、本文介绍 本文给大家带来的改进机制是由YOLO-Face提出能够改善物体遮挡检测的注意力机制SEAM,SEAM(Spatially Enhanced Attention Module)注意力网络模块旨在补偿被遮挡面部的响应损失,通过增强未遮挡面部的响应来实现这一目标,其希望通过学习遮挡面和未遮挡面之间的…

Word转PDF保持图片原有清晰度

目录 1、需要的软件 2、配置Acrobat PDFMaker 3、配置Acrobat Distiller 4、更改Acrobat PDFMaker中的首选项 5、将word转换成pdf 1、需要的软件 利用Adobe Acrobat DC工具。 打开word,选择Acrobat的插件,选择首选项。 如果没有出现Acrobat插件也…

Java学习记录(十七)IO流(三)

转换流(在字节流中想使用字符流的方法时使用) 转换流是字节流和字符流之间的桥梁,转换流本身其实就是字符流所以可以使用字符流里的相关方法,通过InputStreamReader字符转换输入流能将字节流转化为字符流输入到内存中&#xff0c…

基于java的公寓报修管理系统设计与实现(程序+文档+数据库)

** 🍅点赞收藏关注 → 私信领取本源代码、数据库🍅 本人在Java毕业设计领域有多年的经验,陆续会更新更多优质的Java实战项目,希望你能有所收获,少走一些弯路。🍅关注我不迷路🍅** 一、研究背景…

portraiture2024汉化版PS人像处理的磨皮美化插件

Portraiture插件是一款广泛应用于人像处理的磨皮美化插件,尤其在Photoshop和Lightroom等图像编辑软件中备受欢迎。这款插件能够帮助用户快速实现智能磨皮效果,使皮肤看起来更加平滑细腻,同时保留自然纹理和其他重要细节。Portraiture是一款适…

STM32利用标准库编写同时输出4路PWM信号的程序(Proteus)仿真

先看看结果: 这个是根据上午发的文章的基础上更改的,很简单,只是用了一个定时器,初始化了4个比较器而已,就可以单独的控制每一路PWM的占空比了,好了,把源文件展示一下,完事去接孩子放…

NCDA大赛中哪些HTML5设计作品展现出色?

与传统的HTML网页设计相比,HTML5网页设计主要是对网页内容的加强。HTML5已成为目前最流行的标记语言,拥有成熟的社区和广泛的浏览器支持,HTML5完整的功能和强大的扩展性使设计师和开发者能够点铁成金。HTML5可以一手控制更多可控元素&#xf…

eggjs+egg-mongoose操作mongodb数据库

使用的数据库是mongodb数据库,mongodb的数据库表创建就不一一介绍了,可自行查询资料如何创建数据库。 使用的数据库可视化工具是mongodb compass 使用的接口工具是postman 这里使用的egg项目脚手架模板是simple版本,详细创建项目流程可在egg…

Redis常见数据类型下

目录 Hash 哈希 常用指令 HSET HGET HEXISTS HDEL HKEYS HVALS HGETALL HMGET 内部编码 Hash类型和关系型数据库 缓存方式对比 List 列表 特点 常用命令 LPUSH LPUSHX RPUSH RPUSHX LRANGE LPOP / RPOP LINDEX LINSERT 阻塞(BLOCK)版…

【Python】新手入门学习:什么是工作目录?

【Python】新手入门学习:什么是工作目录? 🌈 个人主页:高斯小哥 🔥 高质量专栏:Matplotlib之旅:零基础精通数据可视化、Python基础【高质量合集】、PyTorch零基础入门教程👈 希望得…

数据库不应放在容器中?- B站Kubernetes有状态服务实践(Elasticsearch/Clickhouse)

本期作者 前言 云原生时代下, Kubernetes已成为容器技术的事实标准, 使得基础设施领域应用下自动化运维管理与编排成为可能。对于无状态服务而言, 业界早已落地数套成熟且较完美的解决方案。可对于有状态的服务, 方案的复杂度就以…

StringBuilder --java学习笔记

StringBuilder 代表可变字符串对象,相当于是一个容器,它里面装的字符串是可以改变的,就是用来操作字符串的StringBuilder比String更适合做字符串的修改操作,效率会更高,代码也会更简洁 StringBuilder的常用构造器和方…