当前位置: 首页 > news >正文

web学习笔记(四十二)

目录

1.ECMAScript 新特性-async 和await

1.1async函数

1.2await函数

1.3补充:

2. ES6模块化 

2.1模块化的优点

2.2 ES6 模块化语法

2.3 ES6 模块暴露

2.4ES6 模块导入


1.ECMAScript 新特性-async 和await

1.1async函数

  • async函数可以单数使用,但一般我们会将async函数和await函数结合使用,可以让异步代码像同步代码一样运行,也可以用来解决回调地狱的问题。
  • async函数的返回值为promise对象。promise对象的结果由async函数执行的返回值决定
            const show = async function () {//返回值是一个promise对象 console.log('hhh');// 如果返回值是非promise或undefined,表示成功,返回值是成功的值// return 'lll';// 返回值是promise对象时return Promise.resolve('ok')// return Promise.reject('no')}var a = show();console.log(a);

1.2await函数

  1.  await必须写在async函数中,但是async函数中可以没有await
  2.  await右侧的表达式一般为promise对象,但也可以是其它值
       //1.创建promise对象const p = new Promise((resolve, reject) => {resolve('成功'); //用户数据});//await 要放在async函数中async function main() {let result = await p;//成功的结果console.log(result);}//调用函数main()
  3.  如果表达式是Promise 对象,await返回的是Promise成功的值
  4.  如果表达式是其它值,直接将此值作为await的返回值
  5.  如果await的promise失败了,就会抛出异常,需要通过 try...catch捕获处理
        //1.创建promise对象const p = new Promise((resolve, reject) => {// resolve('成功的值');//用户数据reject('失败啦')});//await 要放在async函数中async function main() {try {let result = await p;//成功的结果console.log(result);} catch (i) {console.log(i);}}//调用函数main()

1.3补充:

  • js是单线程的,在执行时会分为同步任务和异步任务,异步任务又分为宏任务(setTimeout,setInterval) 和微任务(promise,await),微任务优先于宏任务执行。
  • async通常与await搭配使用,await必须在asyc函数中使用,当async函数中遇到await关键字时,程序 会等待await关键字后面所有的异步代码执行完毕后才会继续执行,注意:await后面通常会跟一个promise 异步任务 当promise状态改变才会执行后面代码
  •  定义函数为异步函数,使用关键字async定义的函数,会自动 返回一个成功状态的promise对象 当前函数的返回值则为promise对象成功状态的返回值

2. ES6模块化 

模块化就是讲一个大的程序文件,拆分成许多小的文件,然后讲小文件组合起来。

2.1模块化的优点

  1. 防止命名冲突
  2. 代码复用----相当封装一个函数,暴露一个接口
  3. 高维护性----- 可以让多个人分别更改不同模块,互不影响

2.2 ES6 模块化语法

模块功能主要由两个命令构成:export 和 import。

  • export 命令 就是导出,用于规定模块的对外接口,会对外暴露接口。
  • import 命令 就是导入,用于输入其他模块提供的功能。

2.3 ES6 模块暴露

(1)分别暴露:就是在需要暴露的变量或函数名前加上 export关键字。

             export let a=10;export function show(){console.log('分别暴露');}

(2)统一暴露:在export{ }内部写入需要暴露的变量名或函数名,中间用逗号隔开。

// 统一暴露
let a = 100;
let fn = function () {console.log('统一导出');
}
const obj = {name: 'aaa',age: 18
}
let arr = [10, 20, 30]
export {a,fn,obj,arr
}

(3)默认暴露:export default { }在花括号内可以写入任意数据类型的数据,但大部分都是对象。

// 默认暴露 default
let c = 1000;
let show = function () {console.log('默认暴露222');
}
export default {// 可以是数字、字符串,但大部分是对象a: 800,b: [11, 22, 33, 44],fn: function () {console.log('默认暴露');},c,show
}

2.4ES6 模块导入

(1) 通用方法导入: import 变量名 from '路径' (变量名中存的是对象)

  import * as m1 from './1.js'
  •  在解构时如果发生变量名重复的情况则需要使用as别名来解决问题。此时使用变量名或者需要调用函数直接用别名进行操作就可以了。
  import {  a, fn as fn1, obj, arr as arr1} from './2.js';console.log(arr1);fn1();
  • 在使用默认暴露时就不能使用上面的通用方法导入了,默认暴露有专门的简便的导入形式。

import m3 from './3.js'

(2)解构方法来导入

 import {  a, fn , obj, arr } from './2.js';

如果默认暴露想要以解析的方式进行导入操作的话必须要使用别名,因为default相当于一个关键字。所以得使用别名。

 import{default as m4}from './3.js';console.log(m4);

  • 导入不存在的变量,程序不会抛出异常,只是值为undefined。 
  • 除了对象类型以外,导出的属性对外都是只读的

相关文章:

web学习笔记(四十二)

目录 1.ECMAScript 新特性-async 和await 1.1async函数 1.2await函数 1.3补充: 2. ES6模块化 2.1模块化的优点 2.2 ES6 模块化语法 2.3 ES6 模块暴露 2.4ES6 模块导入 1.ECMAScript 新特性-async 和await 1.1async函数 async函数可以单数使用,…...

大模型分布式推理ray

一、目录 1 框架 2. 入门 3. 安装教程 4. 相关文档、案例阅读 二、实现 1 框架:Ray:将一个模型拆分到多个显卡中,实现分布式预测、训练等功能。 2. 入门 : 案例:通过ray 实现分布式部署,分布式推理服务。…...

Python学习:循环语句

Python循环语句 概念 循环语句是编程中常用的结构,用于多次执行相同或类似的代码块。Python中有两种主要的循环语句:for循环和while循环。 for循环: for循环用于遍历一个序列(如列表、元组、字符串等)中的元素&#x…...

【物联网开源平台】tingsboard二次开发

别看这篇了,这篇就当我的一个记录,我有空我再写过一篇,编译的时候出现了一个错误,然后我针对那一个错误执行了一个命令,出现了绿色的succes,我就以为整个tingsboard项目编译成功了,后面发现的时候&#xff…...

Vue+ELement UI el-table移入或选中某行时改变颜色

起因 出库按钮 置灰时&#xff0c;鼠标移入到表格的某行时&#xff0c;行背景颜色与按钮背景颜色会被覆盖住 最初颜色 实现效果 修改行背景颜色 <style>/* 用来设置当前页面element全局table 选中某行时的背景色*/.el-table__body tr.current-row>td{background-c…...

【Git】日志功能

1. git日志显示 # 显示前3条日志 git log -3# 单行显示 git log --oneline# 图表日志 git log --graph# 显示更改摘要 git log --stat# 显示更改位置 git log --patch 或 git log -p# 查看指定文件的提交历史记录 git log {filename}例子1&#xff1a;单行显示 例子2&#xff…...

【网络爬虫】(1) 网络请求,urllib库介绍

各位同学好&#xff0c;今天开始和各位分享一下python网络爬虫技巧&#xff0c;从基本的函数开始&#xff0c;到项目实战。那我们开始吧。 1. 基本概念 这里简单介绍一下后续学习中需要掌握的概念。 &#xff08;1&#xff09;http 和 https 协议。http是超文本传输&#xf…...

yolov9目标检测可视化图形界面GUI源码

该系统是由微智启软件工作室基于yolov9pyside6开发的目标检测可视化界面系统 运行环境&#xff1a; window python3.8 安装依赖后&#xff0c;运行源码目录下的wzq.py启动 程序提供了ui源文件&#xff0c;可以拖动到Qt编辑器修改样式&#xff0c;然后通过pyside6把ui转成python…...

美团2024届秋招笔试第二场编程真题

要么是以0开头 要么以1开头 选择最小的答案累加 import java.util.Scanner; import java.util.*; // 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和…...

Server-u配置FTP 多用户访问多目录图解

目录 一、 本案例目录环境 二、实现目标 三、实现方法 1、新建ftp域名 2、目录设置 3、用户创建 上篇文章【Server-U搭建FTP共享文件】很多朋友都私信我,希望深入了解Server-U的多用户设置,因此对多用户的访问设置进行了如下的总结。 一、...

ARM IHI0069F GIC architecture specification (1)

CH1.1 关于通用中断控制器 (GIC) GICv3 架构设计用于与 Armv8-A 和 Armv8-R 兼容的处理元件、PE 一起运行。 通用中断控制器 (GIC) 架构定义&#xff1a; • 处理连接到GIC 的任何PE 的所有中断源的架构要求。 • 适用于单处理器或多处理器系统的通用中断控制器编程接口。 GIC …...

golang+vue微服务电商系统

golangvue微服务电商系统 文章目录 golangvue微服务电商系统一、项目前置准备二、项目简介三、代码GItee地址 golang、vue redis、mysql、gin、nacos、es、kibana、jwt 一、项目前置准备 环境的搭建 官方go开发工程师参考地址&#xff1a;https://blog.csdn.net/qq23001186/cat…...

2024年大模型面试准备(三):聊一聊大模型的幻觉问题

节前&#xff0c;我们组织了一场算法岗技术&面试讨论会&#xff0c;邀请了一些互联网大厂朋友、参加社招和校招面试的同学&#xff0c;针对大模型技术趋势、大模型落地项目经验分享、新手如何入门算法岗、该如何备战、面试常考点分享等热门话题进行了深入的讨论。 合集在这…...

微信小程序实战:无痛集成腾讯地图服务

在移动互联网时代,地图服务无疑是应用程序中最常见也最实用的功能之一。无论是导航定位、附近搜索还是路线规划,地图服务都能为用户提供极大的便利。在微信小程序开发中,我们可以轻松集成腾讯地图服务,为小程序赋能增值体验。本文将详细介绍如何在微信小程序中集成使用腾讯地图…...

[flask]flask的路由

路由的基本定义 路由就是一种映射关系。是绑定应用程序&#xff08;视图&#xff09;和url地址的一种一对一的映射关系&#xff01;在开发过程中&#xff0c;编写项目时所使用的路由往往是指代了框架/项目中用于完成路由功能的类&#xff0c;这个类一般就是路由类&#xff0c;…...

javaWeb项目-快捷酒店信息管理系统功能介绍

开发工具&#xff1a;IDEA 、Eclipse 编程语言: Java 数据库: MySQL5.7 框架&#xff1a;ssm、Springboot 前端&#xff1a;Vue、ElementUI 关键技术&#xff1a;springboot、SSM、vue、MYSQL、MAVEN 数据库工具&#xff1a;Navicat、SQLyog 项目关键技术 1、JSP技术 JSP(Java…...

C++ primer 第十五章

1.OPP:概述 面向对象程序设计的核心思想是数据抽象、继承和动态绑定。 通过继承联系在一起的类构成一种层次关系&#xff0c;在层次关系的根部的是基类&#xff0c;基类下面的类是派生类 基类负责定义在层次关系中所有类共同拥有的成员&#xff0c;而每个派生类定义各自特有…...

【数据结构与算法】直接插入排序和希尔排序

引言 进入了初阶数据结构的一个新的主题——排序。所谓排序&#xff0c;就是一串记录&#xff0c;按照其中的某几个或某些关键字的大小&#xff08;一定的规则&#xff09;&#xff0c;递增或递减排列起来的操作。 排序的稳定性&#xff1a;在一定的规则下&#xff0c;两个值…...

HQL,SQL刷题,尚硅谷

目录 相关表数据&#xff1a; 题目及思路解析&#xff1a; 多表连接 1、课程编号为"01"且课程分数小于60&#xff0c;按分数降序排列的学生信息 2、查询所有课程成绩在70分以上 的学生的姓名、课程名称和分数&#xff0c;按分数升序排列 3、查询该学生不同课程的成绩…...

随机生成用户名、密码、注册时间【Excel】

1.1简介 最近想虚拟一些数据&#xff0c;看下有没有自动生成的工具。百度看了下&#xff0c;大概有这么几种方法 1.excel内置公式函数处理 2.使用使用VBA宏生成随机 3.下载方方格子&#xff0c;emm工具是个好工具&#xff0c;蛮多功能的&#xff0c;每月8块 4.Java函数实现…...

C++函数模板详解(结合代码)

目录 1. 模板概念 2. 函数模板语法 3. 函数模板注意事项 4. 函数模板案例 5. 普通函数与函数模板的区别 6. 普通函数与函数模板的调用规则 7. 模板的局限性 1. 模板概念 在C中&#xff0c;模板是一种通用的程序设计工具&#xff0c;它允许我们处理多种数据类型而不是固…...

Nest学习随笔

一、Middleware(中间件)、Interceptor(拦截器)、ExceptionFilter(异常过滤器) 执行顺序 接口调用正常&#xff1a;Middleware > Interceptor接口调用异常&#xff1a;Middleware > ExceptionFilter 二、访问静态文件 使用 nestjs/serve-static 依赖 配置方法&#x…...

二十二、软考-系统架构设计师笔记-真题解析-2018年真题

软考-系统架构设计师-2018年上午选择题真题 考试时间 8:30 ~ 11:00 150分钟 1.在磁盘调度管理中&#xff0c;应先进行移臂调度&#xff0c;再进行旋转调度。假设磁盘移动臂位于21号柱面上&#xff0c;进程的请求序列如下表所示。如果采用最短移臂调度算法&#xff0c;那么系统…...

2024最新最全Selenium自动化测试面试题!

1、什么是自动化测试、自动化测试的优势是什么&#xff1f; 通过工具或脚本代替手工测试执行过程的测试都叫自动化测试。 自动化测试的优势&#xff1a; 1、减少回归测试成本 2、减少兼容性测试成本 3、提高测试反馈速度 4、提高测试覆盖率 5、让测试工程师做更有意义的…...

Docker 搭建Redis集群

目录 1. 3主3从架构说明 2. 3主3从Redis集群配置 2.1关闭防火墙启动docker后台服务 2.2 新建6个docker容器实例 2.3 进去任意一台redis容器&#xff0c;为6台机器构建集群关系 2.4 进去6381&#xff0c;查看集群状态 3. 主从容错切换迁移 3.1 数据读写存储 3.1.1 查看…...

spring boot商城、商城源码 欢迎交流

一个基于spring boot、spring oauth2.0、mybatis、redis的轻量级、前后端分离、防范xss攻击、拥有分布式锁&#xff0c;为生产环境多实例完全准备&#xff0c;数据库为b2b2c设计&#xff0c;拥有完整sku和下单流程的商城 联系: V-Tavendor...

全面解析“通义千问”:功能、优势与使用指南

引言&#xff1a; “通义千问”是由阿里云研发的一款先进的人工智能语言模型&#xff0c;以其强大的自然语言处理能力与广泛的知识覆盖面&#xff0c;在教育、咨询、信息检索等领域发挥着重要作用。本文将详细介绍“通义千问”的核心功能、显著优势以及具体使用方法。 一、“…...

【第三方登录】Google邮箱

登录谷歌邮箱开发者 https://console.developers.google.com/ 先创建项目 我们用的web应用 设置回调 核心主要&#xff1a; 1.创建应用 2.创建客户端ID 3.设置域名和重定向URL 4.对外公开&#xff0c;这样所有的gmail邮箱 都能参与测试PHP代码实现 引入第三方包 h…...

oslo_config学习小结

2.配置文件加载方法 2.1基础 配置文件指的是文件以.conf,.ini结尾等内容为配置项的文件&#xff0c;配置文件内容格式一般为 [DEFAULT] option value [sectiona] optiona valuea optionb valueb [sectionb] optionc valuec optiond valued 2.2加载方法&#xf…...

SpringBoot2.6.3 + knife4j-openapi3

1.引入项目依赖&#xff1a; <dependency><groupId>com.github.xiaoymin</groupId><artifactId>knife4j-openapi3-spring-boot-starter</artifactId><version>4.5.0</version> </dependency> 2.新增配置文件 import io.swag…...