ES6 的一些新函数(不定时更新)

异步FIFO的隐形陷阱:复位信号同步化实战解析 本文深入解析异步FIFO设计中复位信号同步化的隐形陷阱,重点分析赛灵思xpm_fifo_async原语在FPGA应用中的常见问题。通过实战代码和系统集成方案,提供复位同步化的最佳实践,帮助工程师避免跨时钟域通信故障,提升系统可靠性。 阅读详情

Generator 函数

简介


Generator函数是ES6提供的一种异步编程解决方案,Generator函数除了状态机,还是一个遍历器对象生成函数。形式上,Generator函数是一个普通函数,但是有两个特征。一是,function关键字与函数名之间有一个星号,二是,函数体内部使用yield语句,定义不同的内部状态。

function* helloWorldGenerator(){
  yield 'hello';
  yield 'world';
  return 'ending';
}
var hw = helloWorldGenerator();

hw.next()
// {value:'hello', done:false}
hw.next()
// {value:'world', done:false}
hw.next()
// {value:'ending', done:true}
hw.next()
// {value:undefined, done:true}

next 方法从上一次定下来的地方开始执行。直到下一个yield停下。每次调用next,都会返回一个对象,对象包括value 和 done 属性。
next 中也可以传值,传的值作为上一次异步任务的返回结果。
举个栗子:

function* gen() {
    let _url = 'www.baidu.com';
    let y = yield fetch(_url);
    console.log(y.info);
}

const data = {};
let g = gen();

function fetch(Str) {
    data.info = Str.split('.')[1];
    return Str.split('.')[1];
}

g.next();    //  { value: 'baidu', done: false}
g.next(data) //  { value: undefined, done: true}  输出 baidu  

上述栗子第一次传入的2会被返回值 x + 2接收,返回 1+ 2 = 3 ; 第二次传入的3被y接收,返回3 。

有了这个概念,就可以分析ES6d 案例了。

function* fibs() {
  let a = 0;
  let b = 1;
  while (true) {
    yield a;
    [a, b] = [b, a + b];
  }
}

let [first, second, third, fourth, fifth, sixth] = fibs();
sixth // 5

根据定义可以知道Generator函数 可以遍历,也就是具有Iterator接口。解构赋值时,每次都会执行fibs函数,在函数未完成之前,都会循环赋值, a=b, b= a+b,所以first 到 sixth 的值就是0 ~ 5.

Promise 函数

简介


一个Promise对象可以理解为一次需要执行的操作,这种操作可以通过链式的方式来调用和组织代码,这样的代码看起来更直观。

resolve 和 reject


resolve 方法将Promise函数的状态变更为成功,同时(只)可以传递一个参数。
reject 方法将Promise函数的状态变更为失败,同时(只)可以传递一个参数。

对于Promise函数,有3个状态:

  • Fulfilled 表示成功状态,resolve 函数执行时更改成的状态。
  • Rejected 表示失败状态,reject 函数执行时更改成的状态。
  • Pending 表示Promise对象在被对象实例化的时候的状态。

then 和 catch

Promise函数之所以看起来很简洁,就是因为所有的链式操作都包含在then 和 catch 中。then 方法中接收2个参数 then(onFulfilled, onRejected) 。举个栗子:

function printHello (ready) {
    return new Promise(function (resolve, reject) {
        if (ready) {
            resolve("Hello");
        } else {
            reject("Good bye!");
        }
    });
}

function printWorld () {
    alert("World");
}

function printExclamation () {
    alert("!");
}

printHello(true)
    .then(function(message){
        alert(message);      //  "hello"
    })
    .then(printWorld)        //  "world"
    .then(printExclamation); //  "!"

上面所有的then方法中执行的操作均处基于 printHello 的状态是fulfilled。
同时,then 函数中也可以有返回值,返回值会作为后续操作的参数。栗子:

printHello(true).then(function (message) {
    return message;
}).then(function (message) {
    return message  + ' World';
}).then(function (message) {
    return message + '!';
}).then(function (message) {
    alert(message);
});

只会打印出 ‘Hello World !’;

catch

上面的栗子只在then方法中传入了一个参数 onFulfilled,第二个参数可以省略,也可以作为第二个参数卸载then方法中,也可以通过catch函数链接在then 方法后面。所以上面的代码如果需要加上错误处理的话,可以这样子:

printHello(true)
    .then(function(message) {
        return message;
    })
    .catch(function(err) {
        console.log(err);
    })
    .then(function(message) {
        return message + ' World';
    })
    .catch(function(err) {
        console.log(err);
    })
    .then(function(message) {
        return message + '!';
    })
    .catch(function(err) {
        console.log(err);
    })
    .then(function(message) {
        alert(message);
    })
    .catch(function(err) {
        console.log(err);
    });

这样子代码就很简洁。将异步的操作通过链式的方式变成了同步。
注: 如果用了then 和 catch , 那么他们都只能接收一个参数。

Promise.all

Promise.all 可以接收一个元素为 Promise 对象的数组作为参数,当这个数组里面所有的 Promise 对象都变为 resolve 时,该方法才会返回。栗子:

var p1 = new Promise(function (resolve) {
    setTimeout(function () {
        resolve("Hello");
    }, 3000);
});

var p2 = new Promise(function (resolve) {
    setTimeout(function () {
        resolve("World");
    }, 1000);
});

Promise.all([p1, p2]).then(function (result) {
    console.log(result); // ["Hello", "World"]
});

虽然P2在执行比P1快,但是Promise.all 方法会按照数组里面的顺序将结果返回。所以输出是在3秒后。

Promise.race

Promise.race 和 Promise.all 很像,都接收一个数组,但是在数组中的promise对象只要有一个状态发生改变就会返回。而且只返回一次。

var p1 = new Promise(function (resolve) {
    setTimeout(function () {
        resolve("Hello");
    }, 3000);
});

var p2 = new Promise(function (resolve) {
    setTimeout(function () {
        resolve("World");
    }, 1000);
});

Promise.race([p1, p2]).then(function (result) {
    console.log(result); // "World"
});
从婴儿学步到工业级应用:VLA的‘隐式标定‘原理通俗图解 本文深入解析VLA(Vision-Language-Action)模型的'隐式标定'原理,通过类比婴儿学习机制,揭示其如何替代传统手眼标定技术。文章对比了工业机器人传统标定与VLA数据驱动方法的差异,并可视化神经网络注意力机制,展示其在空间关系编码上的突破性进展。最后探讨了VLA在工业应用中的优势与混合架构解决方案。 阅读详情

相关推荐

SAP FICO CK40N批量发布标准价:常见报错排查与实战解决指南

本文详细解析了SAP FICO模块中CK40N批量发布标准价的常见报错及解决方案。从物料选择、成本核算到最终发布的全流程,提供了针对'已有标准成本估算记号'等典型报错的实战处理技巧,并分享了预防性维护与批量处理的高效方法,帮助财务人员提升工作效率。

weixin_29234509的博客 306

【JS】ES6- 函数新增

ES6新增了很多函数相关,下面一起来了解一下: 当参数不赋值是,函数得到的结果是NaN,但是给了默认值后,如果不赋值就会按照默认值执行。args参数可代替arguements,arguements是一个类数组对象,args是纯数组。 完成累加函数 arguements的长度最大为255。 ...args输出之后是个纯数组。 对于这种返回一句话的函数,可以省略function、花括号{}和return 当函数不止一句时,花括号{}不可省略。 当函数有多个参数或没有参数时,(

m0_50947589的博客 836

SpringBoot 自定义注解来实现动态切换数据源

/ 初始化数据源@Override@Inherited@Pointcut(“@annotation(包名.aop.DataSource)”) public void@Pointcut 注解定义了一个切点,名称为 dynamicDataSource。@annotation(包名.aop.DataSource) 表示这个切点匹配所有带有 @DataSource 注解的方法。

晴天飛 雪的博客 1838

【js稳扎基础篇】ES6为Array新增的函数,将它们‘一网打尽‘

Everyone,让我们来瞅瞅ES6 为 Array 增加了哪些静态函数和原型(实例)方法辅助函数,废话不多说,直接上干货!

weixin_43680060的博客 752

将Apollo高精地图中的车道线叠加在多种导航地图上

本文介绍了将Apollo高精地图车道线叠加到普通导航地图的技术方案。高精地图具备厘米级车道精度和丰富的语义信息,叠加可实现可视化验证、调试分析和数据对比等功能。核心技术包括坐标系统转换(UTM/WGS84/BD09/GCJ02)和数据处理流程,通过Python脚本完成Apollo地图解析、坐标批量转换和多格式输出。文章详细提供了环境准备、工作目录创建和坐标转换脚本等操作步骤,实现了高精地图数据在OpenStreetMap、百度地图和高德地图上的可视化展示。

Hi20240217的博客 1336

【Network Management】DCM模块唤醒网络是主动唤醒还是被动唤醒

DCM模块唤醒网络是主动唤醒还是被动唤醒

qq_36056498的博客 1541

ES6学习——ES6新增的类型和函数

1.Symbol ES5 的对象属性名都是字符串,这容易造成属性名的冲突。⽐如,你使⽤了⼀个他⼈提供 的对象,但⼜想为这个对象添加新的⽅法(mixin 模式),新⽅法的名字就有可能与现有⽅法产⽣冲突。如果有⼀种机制,保证每个属性的名字都是独⼀⽆⼆的就好了,这样就从根本上防⽌属性名的冲突。ES6 引⼊了⼀种新的原始数据类型 Symbol ,表示独⼀⽆⼆的值 1. ⽣成Symbol值 通过调⽤Symbol函数⽣成⼀个Symbol值,这个值是独⼀⽆⼆的。注意,Symbol的值...

我们的目标是星辰大海 451

2.1 直流无刷电机(BLDC):机械结构与组件

本文详细解析了直流无刷电机(BLDC)的机械结构与核心组件。BLDC电机通过电子换向取代传统机械电刷,主要包含定子、转子、位置传感器和电子换向器四大组件。定子采用硅钢片叠压结构,配有三相绕组;转子采用永磁体材料,结构设计影响转矩特性;位置传感器(霍尔、编码器、旋转变压器)实现精准换向;电子换向器通过功率逆变拓扑完成电流控制。文章还对比了不同绕组类型、永磁材料及传感器技术的性能特点,为BLDC电机的设计与应用提供了理论基础。

技术工作者 393

AD20 Altium designer——如何快速批量调整丝印位置、大小_ad丝印层怎么设置

如果我们不需要进行批量调整,可以参考一下步骤在一些复杂的PCB,我们可以在选择丝印层后,按下Shift+S键,可以更清楚地看清丝印布局,效果如下所示。

2401_85013850的博客 3816

学习STM32的CAN总线通信

在配置时,确保您启用了CAN总线功能。CAN节点是CAN总线上的一个设备,每个节点都有唯一的标识符。在CAN总线中,有两种类型的节点:CAN控制器和CAN外设。步骤2:配置CAN总线 在STM32CubeMX中,选择CAN总线模块并进行必要的配置。在CAN总线中,有两个重要的概念:CAN节点和CAN帧。步骤5:测试CAN总线通信 在成功编译和烧录代码后,您可以使用串口调试助手或其他CAN总线工具来测试CAN总线通信。步骤3:编写CAN总线通信代码 在项目的主代码文件中,我们将编写CAN总线通信的示例代码。

2401_85258012的博客 497

在 SAP 中修改 Profile 文件中的主机名需要谨慎操作,需需确保所有相关配置保持一致

在SAP系统中修改Profile文件主机名需谨慎操作,主要步骤包括:1)停止相关SAP服务;2)重命名并编辑实例级Profile文件(如ER1_D00_OLDHOST改为ER1_D00_LRPSAP),修改所有含旧主机名的参数;3)可选更新默认Profile文件;4)在Windows系统中调整注册表配置;5)验证一致性后重启服务。关键注意:保持大小写统一、修改前备份文件、集群环境需同步所有节点。通过系统日志确认新主机名生效且无报错。

金牌架构师 1052

ES6中函数新增的方式方法

1.1函数形参的默认值 1.1.1基本用法   ES6 之前,不能直接为函数的参数指定默认值,只能采用变通的方法。如下代码: function func(x,y){ y = y || "tom"; console.log(x,y); } func("hello"); //hello tom func("hello","woeld"); ...

tabweb的博客 758

硬件工程师的破局之路:为何你才是考取软考高级架构师的“天选之子”?

硬件工程师如何转型系统架构师:独特优势与实战路径 文章揭示了硬件工程师在考取系统架构设计师证书时的独特优势。作者指出,硬件工程师的全局思维、接口设计能力和可靠性经验正是系统架构的核心要素。通过将硬件经验升维为架构思维(从引脚到接口、从单板到系统、从实现到权衡),硬件背景反而成为竞争优势。文章建议通过知识补全、建立架构决策日志和术语转换练习来备考,并强调硬件工程师在软硬协同时代的独特价值——既能统领硬件设计,又能为软件搭建最佳舞台。文末鼓励硬件工程师以更高视野看待职业发展,将系统架构师认证视为水到渠成的职业升

云轩阁 535

2024ES6八股文,不定时更新

2024年ES6八股文

qq_43313093的博客 1021

贝叶斯统计 [韦来生编]

贝叶斯(Bayes)统计是近几十年来迅速发展起来的数理统计的一个重要分支。贝叶斯方法与经典统计方法的主要不同之处是进行统计推断时除了利用样本信息外,还要利用参数的先验信息,因此可以提高统计推断或统计决策的效果。它在经济、金融、生物、医学、自然科学和社会科学等许多领域具有广泛的应用。贝叶斯方法的研究已渗透到了统计学的几乎所有领域。作者在给中国科学技术大学概率论与数理统计专业本科生开设的“数理统计”课程中有一章专门讲授“贝叶斯方法和统计决策理论”,近十年来也给中国科学技术大学概率统计专业研究生开设过几次“贝叶斯分析”课。本书是在对过去讲稿的内容作了适当的增减和调整的基础上完成的。  本书共分六章。第1章是绪论,介绍了贝叶斯统计的若干基本概念,同时对必要的数理统计的基础知识有重点地作了回顾。第二章介绍了确定先验分布的若干可供选择的方法。第三章介绍了几类常见统计模型参数的后验分布的主要结果和计算方法。第四章和第五章分别介绍了“贝叶斯统计推断”和“贝叶斯统计决策”的内容。第六章介绍了贝叶斯统计计算的若干方法,包括蒙特卡洛方法和马尔可夫链蒙特卡洛(MCMC)方法以及相关统计软件的简介。本书的每一章附右大量的例题和习题,书末附有常用的几个表格和部分习题解答供读者查用。  大约可在54学时内讲授本书的第1章至第六章的主要内容,教师可根据学时需要选讲本书第1章至第六章的部分内容。书中标“*”号的章节可略去不讲,留给读者作为阅读材料。第六章例题中的R代码和部分例题的数据文件等可从作者个人主页下载。  作者在编写本书的过程中参考了J.O.Berger教授的《统计决策论及贝叶斯分析》和茆诗松教授编写的《贝叶斯统计》等书中的一些内容,以及《贝叶斯分析》一书中由张伟平博士编写的有关贝叶斯统计计算的一些内容。在此表示衷心感谢。  本书编写准备过程中,中国科学技术大学统计与金融系的几个研究生帮助完成了本书部分中文的录入和排版,作者对他们的辛勤工作表示真诚的感谢。高等教育出版社为本书的出版给予了大力支持。在此一并致谢。

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

ES6-learning:如何快速掌握JavaScript ES6新语法

ES6-learning是一个专注于《深入理解ES6》教程的学习笔记项目,旨在帮助开发者系统掌握JavaScript ES6新语法。通过本项目提供的详细笔记和示例,你将能够快速理解并应用ES6的核心特性,提升JavaScript编程技能。 ## 为什么学习ES6至关重要? ES6(ECMAScript 2015)是JavaScript语言的一次重大更新,引入了许多现代化的语法特性和功能改进。掌

gitblog_00789的博客 1104

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

Elasticsearch:ES|QL 改进的时间线

ES|QL发展历程概览:Elasticsearch推出的ES|QL查询语言自8.11版本技术预览以来持续进化。8.12优化性能并支持空间数据,8.13引入异步查询和字符串处理函数。8.14正式发布后,新增分组统计和空间函数。8.15-8.17逐步完善类型转换、聚合分析和时间精度。8.18和9.0版本推出跨索引连接、全文评分和KQL集成等高级功能。每个版本都通过新增命令、函数和性能优化,不断提升数据处理能力,满足可观测性、安全性等多样化场景需求。

Elastic 中国社区官方博客 1265

深入浅出ES6(五):不定参数和默认参数

作者Jason Orendorff github主页 https://github.com/jorendorff 不定参数 我们通常使用可变参函数来构造API,可变参函数可接受任意数量的参数。例如,String.prototype.concat方法就可以接受任意数量的字符串参数。ES6提供了一种编写可变参函数的新方式——不定参数。 我们通过一个简单的可变参数函数cont...

dianhang3622的博客 181

ES6基础:箭头函数

ES6基础系列(三)箭头函数 简要分析一个为什么会有箭头函数,它的意义是什么?

余光的博客 2万+

JavaScript学习之ES6 ES2015学记笔记(四)-不定参数与默认参数

本文是JavaScript ES6的学习记录 本节主要讲述JavaScript的函数语法 不定参数 可变参数可接受任意数量的参数,如String.prototype.concat方法就是可以接受任意数量的字符串参数。ES6提供了一种可 变参函数的新方式——不定参数: 先演示可变参数:例如containsAll("banana","b","nan")返回true,co...

Three_ST的博客 358

es6新语法

JavaScript 语言的发展基于 ECMAScript 标准,它是 JavaScript 的核心语法规范。ECMAScript 由 ECMA(欧洲计算机制造商协会)负责标准化,与 W3C 类似,是一个制定技术标准的国际组织。ECMAScript 定义了 JavaScript 的基础语法、类型系统、原型继承机制,以及一套丰富的内建对象和函数库。ES6(ECMAScript 2015)是JavaScript语言的一个重大更新版本,它引入了许多新的语法和功能,使得JavaScript更加现代化、高效和易用。

几许的博客 1296

ES5到ES6 js的语法更新

js是一门弱语言类型,为了实现更有逻辑的代码,需要不断更新语法规范,es就是用来规范js语法的标准。09年发布了es5,到15年发布es6,到现在es6泛指es5.1以后的版本es2016,es2017。

weixin_45939821的博客 1455

ES6新语法

es6新增语法详解

许小墨的菜鸡博客 821

ES6 初体验 —— gulp+Babel 搭建ES6环境

今天在学ES6,学到ES不定参数和默认参数,发现很好用,完全可以抛弃arguments对象了,arguments是一个类数组对象,虽然有length,而且可以用索引访问各个元素,但是绝大多数开发者也许需要将参数转化成数组,于是一百度,有很多将参数转化成数组的解决方案,但是ES6,直接不定参数就是一个数组。非常好用。突然想起了为什么有了箭头函数,原来是开发者总是绑定this到当前对象,然而箭头函数解

wangshengfei 5949

你真的了解ES6函数特性么?

hello大家好,又见面了。 假期转瞬即逝,年后开工的第一天,早上是真的不想起床吖,为了不迟到闭着眼睛就穿衣服。 好啦好啦,步入正题啦,打起精神哦! 前言 函数是所有编程语言中重要的组成部分,在Es6出现之前 JavaScript的函数语法一直没有太大的变化,从而遗留了很多问题和隐晦的做法,导致实现一些功能需要编写很多代码。 函数形参默认值 JavaScript函数有一个特别的地方,就是无论在函数形参里定义了多少参数,都可以传入任意数量的参数,但是有的情况下,我们的参数只是可填,这样的话我们还在函数体呢写一

蛙人的博客 2981

ES6_函数

本博客用于个人学习使用,资料可能来源于网络,未注明出处,敬请原谅。如有侵权,请联系博主j进行删除。 函数的默认参数 在ES5中,我们给函数传参数,然后在函数体内设置默认值 function fuc(num, callback) { num = num || 6 callback = callback || function(data) { console.log('ES5', data) } ...

qq_40117154的博客 248

ES5 vs ES6:JavaScript 演进之路

ES5 vs ES6:JavaScript 演进之路

qq_20236937的博客 1803

盘点ES6之后每次版本更新

盘点平常使用频繁,对开发者有重大意义的变更,无感的基本就没写,感兴趣的可以参考这篇 ES3到ES11都增加了什么 ES6 1、let 和 const 新的申明变量的方式和变量的作用域 区别1:var声明的变量会挂载在window上,而let和const声明的变量不会 区别2:var声明的变量存在变量提升,而let和const不存在变量提升 区别3:let和const声明形成快作用域 区别4:同一作用域下的let和const不能声明同名变量,而var可以 2、字符串方法和模板字符串 // 模板字符串

qq_42036203的博客 673
上一篇: 使用AlloyFinger(移动端点触插件)
下一篇: ES6标签模板
Aaron灬
博客等级 码龄9年 0粉丝 7原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值