JavaScript之ES中的类继承与Promise
类
ES5中的类及继承
//人function Person(name,age){this.name = name;this.age = age;}Person.prototype.eat = function () {console.log(this.name + "eat");}//程序员,继承,人function Programmer(name,age,language){//构造函数继承Person.call(this,name,age);//新属性this.language = language;}//继承,人,原型Programmer.prototype.__proto__ = Person.prototype;//设置原型上的新方法Programmer.prototype.code = function () {console.log(this.name + "code");}
ES6中的类及继承
class Person {//属性设置在构造函数中constructor(name, age) {this.name = name;this.age = age;}//设置原型上的方法//大括号中的就是原型eat() {console.log(this.name + "eat");}}//声明Programmer类,继承Person类//通过关键字继承父类class Programmer extends Person {//extends关键字继承原型方法//构造函数//如果子类和父类的属性一样,则子类可以不写构造函数,在实例化时继承父类的构造函数//如果有新属性则必须写构造函数constructor(name, age, language) {//通过super关键字继承父类的构造函数super(name, age);//设置新属性this.language = language;//如果子类写了构造函数,就必须通过super继承父类的构造函数//而且必须在设置新属性之前吸纳继承父类的构造函数}//原型通过extends自动继承//设置子类的新方法code() {console.log(this.name + "code");}}//实例化let p = new Programmer("张三", 20, "java");p.eat();p.code();
Promise
同步与异步
同一个文件中的JS是一个同步的过程
console.log(1);console.log(2);
第二行的代码要等第一行的代码结束再执行
function load(){//创建script标签,把1.js加载到页面中let script = document.createElement('script');script.src = '1.js';//插入到head标签中document.head.appendChild(script);}
从其他文件中引入的js代码与单签文件中的js代码是异步关系
异步关系的代码,执行过程中就是“竞速”
JS中有很多异步关系的代码
比如获取数据就是异步过程,页面上的其他内容,不会等待获取数据之后再创建
但是,有的内容就需要获取到数据后,才能展示,如何解决?
需求:在异步“竞速”的过程中,把代码捋顺出来——Promise
function load(){return new Promise((resolve,reject)=>{let script = document.createElement('script');script.src = '1.js';document.head.appendChild(script);script.onload = function (){resolve("成功")}script.onerror = function (){reject("失败")}})}load().then(()=>{console.log(2);},()=>{console.log("有错误");})
捋顺序的核心,时Promiase的回调函数和then里面的方法
then里面的方法,会在回调函数执行完毕之后再执行
在回调函数中,需要人为规定“成功”和“失败”两个状态
当处于成功状态时,就执行resolve方法;当处于失败时,就执行reject方法
如果回调函数最终执行了resolve方法,后续就会执行then中的第一个方法;如果回调函数最终执行了reject方法,后续就会执行then中的第二个方法
resolve和reject两个方法的参数,会传递给then的参数
function load(src){return new Promise((resolve,reject)=>{let script = document.createElement('script');script.src = src;document.head.appendChild(script);script.onload = function (){resolve("成功")}script.onerror = function (){reject("失败")}})}//按照顺序依次引入a-d.js,最后打印加载完毕load('a.js').then(()=>{load('b.js')//load方法返回Pomise对象//但是没有把这个对象返回//所以这个函数没有返回值//then方法会提供一个空对象作为返回值},()=>{console.log('有错误')}).then(()=>{load('c.js')//load方法返回Pomise对象},()=>{console.log('有错误')}).then(()=>{load('d.js')//load方法返回Pomise对象}).then(()=>{console.log('加载完毕')},()=>{console.log('有错误')})
以上代码中,真正有顺序的只是加载a.js在最前面,加载b.js一定在a.js之后
其余c-d的加载和打印加载完毕,没有书序,还是处于异步“竞速”状态
Promise对象只是以确保,当前对象的回调函数与当前then里面的方法的执行顺序
then方法的返回值
如果执行方法有返回值,则就会把放回的返回值设置成then方法的返回值
此例中,then里面执行第一个函数
此时第一个函数没有返回值
不管执行then里面的哪一个方法如果没有返回值,则then方法会自动提供一个空Promise对象作为返回值
只有Promise对象的回调函数和该对象调用的then方法中的函数才有先后关系
正确写法:
//按照顺序依次引入a-d.js,最后打印加载完毕load('a.js').then(()=>{return load('b.js')//load方法返回Pomise对象//但是没有把这个对象返回//所以这个函数没有返回值//then方法会提供一个空对象作为返回值},()=>{console.log('有错误')}).then(()=>{return load('c.js')//load方法返回Pomise对象},()=>{console.log('有错误')}).then(()=>{return load('d.js')//load方法返回Pomise对象}).then(()=>{console.log('加载完毕')},()=>{console.log('有错误')})
相关文章:
JavaScript之ES中的类继承与Promise
类 ES5中的类及继承 //人function Person(name,age){this.name name;this.age age;}Person.prototype.eat function () {console.log(this.name "eat");}//程序员,继承,人function Programmer(name,age,language){//构造函数继承Person.…...
浅析多模态大模型技术路线梳理
前段时间 ChatGPT 进行了一轮重大更新:多模态上线,能说话,会看图!微软发了一篇长达 166 页的 GPT-4V 测评论文,一时间又带起了一阵多模态的热议,随后像是 LLaVA-1.5、CogVLM、MiniGPT-5 等研究工作紧随其后…...
使用 Amazon SageMaker 微调 Llama 2 模型
本篇文章主要介绍如何使用 Amazon SageMaker 进行 Llama 2 模型微调的示例。 这个示例主要包括: Llama 2 总体介绍Llama 2 微调介绍Llama 2 环境设置Llama 2 微调训练 前言 随着生成式 AI 的热度逐渐升高,国内外各种基座大语言竞相出炉,在其基础上衍生出…...
牛客小白月赛86(D剪纸游戏)
题目链接:D-剪纸游戏_牛客小白月赛86 (nowcoder.com) 题目描述: 输入描述: 输入第一行包含两个空格分隔的整数分别代表 n 和 m。 接下来输入 n行,每行包含 m 个字符,代表残缺纸张。 保证: 1≤n,m≤10001 字符仅有 . 和 * 两种字符…...
MySQL的基础操作与管理
一.MySQL数据库基本操作知识: 1.SQL语句: 关系型数据库,都是使用SQL语句来管理数据库中的数据。 SQL,即结构化查询语言(Structured Query Language) 。 SQL语句用于维护管理数据库,包括数据查询、数据更新、访问控…...
Pytorch 中的forward 函数内部原理
PyTorch中的forward函数是nn.Module类的一部分,它定义了模型的前向传播规则。当你创建一个继承自nn.Module的类时,你实际上是在定义网络的结构。forward函数是这个结构中最关键的部分,因为它指定了数据如何通过网络流动。 单独设计 forward …...
四、C语言中的数组:如何输入与输出二维数组(数组,完)
本章的学习内容如下 四、C语言中的数组:数组的创建与初始化四、C语言中的数组:数组的输入与元素个数C语言—第6次作业—十道代码题掌握一维数组四、C语言中的数组:二维数组 1.二维数组的输入与输出 当我们输入一维数组时需要一个循环来遍历…...
基于python+vue智慧农业小程序flask-django-php-nodejs
传统智慧农业采取了人工的管理方法,但这种管理方法存在着许多弊端,比如效率低下、安全性低以及信息传输的不准确等,同时由于智慧农业中会形成众多的个人文档和信息系统数据,通过人工方法对知识科普、土壤信息、水质信息、购物商城…...
好用的GPTs:指定主题搜索、爬虫、数据清洗、数据分析自动化
好用的GPTs:指定主题搜索、爬虫、数据清洗、数据分析自动化 Scholar:搜索 YOLO小目标医学方面最新论文Scraper:爬虫自动化数据清洗数据分析 点击 Explore GPTs: Scholar:搜索 YOLO小目标医学方面最新论文 搜索 Scho…...
使用Qt自带windeployqt打包QML的exe
1.在开始菜单输入CMD找到对应的Qt开发版本,我的是Qt5.15.2(MinGW 8.1.0 64-bit)。 2.在控制台输入如下字符串,格式为 windeployqt exe绝对路径 --qmldir 工程的绝对路径 如下是我的打包代码。 我需要打包的exe的绝对路径 D:\Prj\Code\Demo\QML\Ana…...
C代码快速傅里叶变换-分类和推理-常微分和偏微分方程
要点 C代码例程函数计算实现: 线性代数方程解:全旋转高斯-乔丹消元,LU分解前向替换和后向替换,对角矩阵处理,任意矩阵奇异值分解,稀疏线性系统循环三对角系统解,将矩阵从完整存储模式转换为行索…...
计算机组成原理 双端口存储器原理实验
一、实验目的 1、了解双端口静态随机存储器IDT7132的工作特性及使用方法 2、了解半导体存储器怎样存储和读出数据 3、了解双端口存储器怎样并行读写,产生冲突的情况如何 二、实验任务 (1)按图7所示,将有关控制信号和和二进制开关对应接好,…...
[音视频学习笔记]六、自制音视频播放器Part1 -新版本ffmpeg,Qt +VS2022,都什么年代了还在写传统播放器?
前言 参考了雷神的自制播放器项目,100行代码实现最简单的基于FFMPEGSDL的视频播放器(SDL1.x) 不过老版本的代码参考意义不大了,我现在准备使用Qt VS2022 FFmpeg59重写这部分代码,具体的代码仓库如下: …...
GPT-5可能会在今年夏天作为对ChatGPT的“实质性改进”而到来
每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…...
官宣|阿里巴巴捐赠的 Flink CDC 项目正式加入 Apache 基金会
摘要:本文整理自阿里云开源大数据平台徐榜江 (雪尽),关于阿里巴巴捐赠的 Flink CDC 项目正式加入 Apache 基金会,内容主要分为以下四部分: 1、Flink CDC 新仓库,新流程 2、Flink CDC 新定位,新玩法 3、Flin…...
部署单节点k8s并允许master节点调度pod
安装k8s 需要注意的是k8s1.24 已经弃用dockershim,现在使用docker需要cri-docker插件作为垫片,对接k8s的CRI。 硬件环境: 2c2g 主机环境: CentOS Linux release 7.9.2009 (Core) IP地址: 192.168.44.161 一、 主机配…...
Django日志(三)
内置TimedRotatingFileHandler 按时间自动切分的log文件,文件后缀 %Y-%m-%d_%H-%M-%S , 初始化参数: 注意 发送邮件的邮箱,开启SMTP服务 filename when=h 时间间隔类型,不区分大小写 S:秒 M:分钟 H:小时 D:天 W0-W6:星期几(0 = 星期一) midnight:如果atTime未指定,…...
【吾爱破解】Android初级题(二)的解题思路 _
拿到apk,我们模拟器打开看一下 好好,抽卡模拟器是吧😀 jadx反编译看一下源码 找到生成flag的地方,大概逻辑就是 java signatureArr getPackageManager().getPackageInfo(getPackageName(), 64).signaturesfor (int i 0; i &l…...
富格林:谨记可信计策安全做单
富格林悉知,现货黄金由于活跃的行情给投资者带来不少的盈利的机会,吸引着众多的投资者进场做单。但在黄金投资市场中一定要掌握可信的投资方法,提前布局好策略,这样才能增加安全获利的机会。不建议直接进入市场做单,因…...
【工具使用】mingw64编译完成运行可执行文件时出现乱码
一,问题现象: notepad设置的时UTF-8编码: mingw64命令行设置的编码格式为: 二,问题原因: 在执行的时候,windows下的编码格式是GBK 三,解决方法: 编译时࿰…...
日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする
日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする 1、前言(1)情况说明(2)工程师的信仰2、知识点(1) にする1,接续:名词+にする2,接续:疑问词+にする3,(A)は(B)にする。(2)復習:(1)复习句子(2)ために & ように(3)そう(4)にする3、…...
【第二十一章 SDIO接口(SDIO)】
第二十一章 SDIO接口 目录 第二十一章 SDIO接口(SDIO) 1 SDIO 主要功能 2 SDIO 总线拓扑 3 SDIO 功能描述 3.1 SDIO 适配器 3.2 SDIOAHB 接口 4 卡功能描述 4.1 卡识别模式 4.2 卡复位 4.3 操作电压范围确认 4.4 卡识别过程 4.5 写数据块 4.6 读数据块 4.7 数据流…...
相机Camera日志分析之三十一:高通Camx HAL十种流程基础分析关键字汇总(后续持续更新中)
【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了:有对最普通的场景进行各个日志注释讲解,但相机场景太多,日志差异也巨大。后面将展示各种场景下的日志。 通过notepad++打开场景下的日志,通过下列分类关键字搜索,即可清晰的分析不同场景的相机运行流程差异…...
Android15默认授权浮窗权限
我们经常有那种需求,客户需要定制的apk集成在ROM中,并且默认授予其【显示在其他应用的上层】权限,也就是我们常说的浮窗权限,那么我们就可以通过以下方法在wms、ams等系统服务的systemReady()方法中调用即可实现预置应用默认授权浮…...
纯 Java 项目(非 SpringBoot)集成 Mybatis-Plus 和 Mybatis-Plus-Join
纯 Java 项目(非 SpringBoot)集成 Mybatis-Plus 和 Mybatis-Plus-Join 1、依赖1.1、依赖版本1.2、pom.xml 2、代码2.1、SqlSession 构造器2.2、MybatisPlus代码生成器2.3、获取 config.yml 配置2.3.1、config.yml2.3.2、项目配置类 2.4、ftl 模板2.4.1、…...
如何应对敏捷转型中的团队阻力
应对敏捷转型中的团队阻力需要明确沟通敏捷转型目的、提升团队参与感、提供充分的培训与支持、逐步推进敏捷实践、建立清晰的奖励和反馈机制。其中,明确沟通敏捷转型目的尤为关键,团队成员只有清晰理解转型背后的原因和利益,才能降低对变化的…...
[USACO23FEB] Bakery S
题目描述 Bessie 开了一家面包店! 在她的面包店里,Bessie 有一个烤箱,可以在 t C t_C tC 的时间内生产一块饼干或在 t M t_M tM 单位时间内生产一块松糕。 ( 1 ≤ t C , t M ≤ 10 9 ) (1 \le t_C,t_M \le 10^9) (1≤tC,tM≤109)。由于空间…...
跨平台商品数据接口的标准化与规范化发展路径:淘宝京东拼多多的最新实践
在电商行业蓬勃发展的当下,多平台运营已成为众多商家的必然选择。然而,不同电商平台在商品数据接口方面存在差异,导致商家在跨平台运营时面临诸多挑战,如数据对接困难、运营效率低下、用户体验不一致等。跨平台商品数据接口的标准…...
使用VMware克隆功能快速搭建集群
自己搭建的虚拟机,后续不管是学习java还是大数据,都需要集群,java需要分布式的微服务,大数据Hadoop的计算集群,如果从头开始搭建虚拟机会比较费时费力,这里分享一下如何使用克隆功能快速搭建一个集群 先把…...
PostgreSQL 对 IPv6 的支持情况
PostgreSQL 对 IPv6 的支持情况 PostgreSQL 全面支持 IPv6 网络协议,包括连接、存储和操作 IPv6 地址。以下是详细说明: 一、网络连接支持 1. 监听 IPv6 连接 在 postgresql.conf 中配置: listen_addresses 0.0.0.0,:: # 监听所有IPv4…...
