箭头函数和Promise用法
Promise和箭头函数的奇怪组合
- 箭头函数
- 语法格式
- 箭头函数的this
- 调用this的场景
- 箭头函数的this
- Promise的用法
- 基本格式
- then
- 基本用法举栗
箭头函数
参考链接
语法格式
- 一般情况
(x, y) => {return x + y;}var f = function(x, y){return x + y;
};
- 如果函数只有一行return语句时,"return"关键字和大括号都可以省略
(x, y) => x + y;var f = function(x, y){return x + y;
};
- 如果只有一个参数时,可以省略圆括号:
x => 2*x;var f = function(x){return 2*x;
};
- 如果一个入参都没有,圆括号不能省略:
() => 1;var f = function(){return 1;
};
- 当如入参是对象时同理:
var obj = {var1 : 1,var2 : 'var2',var3 : 3
};obj => obj.var1 + obj.var3;var f = function(param){return param.var1 + param.var3;
};
箭头函数的this
箭头函数的设计目的就是改变“this”的行为特征。this的绑定是动态的,在调用this的时候才能确定其指向。也就是说调用this的场景不同,this的指向也不同(可参考这里)。
调用this的场景
大概可以分为以下几种:
// 普通方法
function fn() {...
}// 对象的方法
var obj = {func:function(){...}
}
obj.func();// 构造函数
function Init(){...
};
new Init();// 绑定事件
btn.onClick = func(){...
};// 定时器中的函数
setInterval(function() {...
}, 1000);// 自调用函数
function(){...
}();
相应地,在这些函数内部的this的指向如下:
调用this的场景 | this指向 |
---|---|
普通方法 | window |
对象的方法 | 该对象 |
构造函数 | 构造函数所属对象 |
绑定事件 | 绑定事件所属对象(eg.按钮所属的对象) |
定时器中的函数 | window |
自调用函数 | window |
举个栗子:
var obj = {birth: 1990,getAge: function () {var b = this.birth; // 1990var fn = function () {return new Date().getFullYear() - this.birth; // 普通函数调用,this指向window,所以这里不是1990};return fn();}
};
箭头函数的this
箭头函数并不绑定this,换句话说箭头函数的this会从作用域链的上一层继承this(或者说箭头函数的this总是指向外层调用者,再或者说箭头函数的this就是外层代码块的this):
var obj = {birth: 1990,getAge: function () {var b = this.birth; // 1990var fn = () => Date().getFullYear() - this.birth; // 1990return fn();}
};
Promise的用法
参考链接
Promise对象用于表示一个异步操作的最终完成 (或失败), 及其结果值。Promise 是一种异步编程的解决方案。Pormise对象有3种对象:
- Pending状态(进行中)
- Fulfilled状态(已成功)
- Rejected状态(已失败)
基本格式
基本格式如下:
var promise = new Promise(function(resolve, reject){// ... some codeif (// 异步调用结果返回成功) {resolve(value);} else { // 异步调用结果返回失败reject(error); }
})
解释:
- executor是带有 resolve 和 reject 两个参数的函数 。Promise构造函数执行时立即调用executor 函数, resolve 和 reject 两个函数作为参数传递给executor(executor 函数在Promise构造函数返回所建promise实例对象前被调用)。
- resolve 和 reject 函数被调用时,分别将promise的状态改为fulfilled(完成)或rejected(失败)。
- executor 内部通常会执行一些异步操作,一旦异步操作执行完毕(可能成功/失败),要么调用resolve函数来将promise状态改成fulfilled,要么调用reject 函数将promise的状态改为rejected。如果在executor函数中抛出一个错误,那么该promise 状态为rejected。executor函数的返回值被忽略。
- 关键点。理解resolve或者reject函数究竟是谁调用的,什么时候调用的,在什么地方调用的:程序不可能知道什么时候算是异步返回成功,因此必定是在异步方法有了返回结果之后,由我们验证后来决定是调用resolve还是reject方法。
- 如果调用了resolve方法,那么可以将异步返回的结果传给后面的.then()方法(具体用法见下面栗子),与此同时promise对象的状态将由Pending置为Fulfilled。
then
Promise实例生成后,可用then方法分别指定两种状态的回调参数。then 方法可以接受两个回调函数作为参数:
4. Promise对象状态改为Fulfilled时调用 (必选)
5. Promise对象状态改为Rejected时调用 (可选)
基本用法举栗
参考链接
let myFirstPromise = new Promise(function(resolve, reject){//当异步代码执行成功时,我们才会调用resolve(...), 当异步代码失败时我们可以调用reject(...)//在本例中,我们使用setTimeout(...)来模拟异步代码,实际编码时可能是XHR请求或是HTML5的一些API方法.setTimeout(function(){resolve("成功!"); //代码正常执行!}, 250);
});myFirstPromise.then(function(successMessage){//successMessage的值是上面调用resolve(...)方法传入的值.//successMessage参数不一定非要是字符串类型,这里只是举个例子console.log("Yay! " + successMessage);
});
// 最终输出:Yay! 成功!
当然,Promise还有很多其它用法,可自行百度谷歌。
箭头函数和Promise用法相关推荐
- ES6箭头函数以及promise/async/await测试案例
ES6箭头函数的运用 下面以一段代码解释 function one(){return 1 以上函数用箭头函数写步骤,参考下面代码 {}和里面的东西先删去 one = (里面写参数/无参数的里面为空)= ...
- 箭头函数的使用用法(一)
1 //箭头函数的一个好处是简化回调函数 2 //箭头函数没有参数,就使用圆刮号代表参数部分: 3 var f = () =>5; 4 console.log(f()); 5 //两个参数的情况 ...
- ES6-ES11-第一部分-let、const、解构赋值、模板字符串、简化对象写法、箭头函数、函数参数默认值、rest 参数、扩展运算符、Symbol、迭代器、生成器、Promise、Set、Map
根据视频进行整理 [https://www.bilibili.com/video/BV1uK411H7on?p=1] 视频资源(百度网盘): 链接:[https://pan.baidu.com/s/1 ...
- javascript函数进阶详细内容 函数闭包 箭头函数 call bind apply用法 偏函数 回调函数
JS函数进阶 这次的内容我会给大家详细介绍函数方面的内容 1.箭头函数:ES6新增的定义函数的方式,箭头函数是用来简化函数定义语法的. - 箭头函数的语法: ()=>{} ()里面写形式参数,{ ...
- 高级JavaScript #ES6(模板字符串,let,箭头函数,forof,参数增强,解构,class,promise)
模板字符串 1.模板字符串: 只要拼接字符串 都用模板字符串代替+a.整个字符串包裹在一对儿反引号 ` ` 中b.反引号``中支持换行 c.反引号中需要动态生成的内容必须放在${}里d. ${}里: ...
- Es6箭头函数详细用法
箭头函数的声名方式: const ccc = (参数列表)=>{} 箭头函数的书写格式: 箭头函数的参数数量: 1.传入一个参数时,参数括号可以省略 举个例子: //放入一个参数(一个参数的时候 ...
- JavaScript箭头函数用法
原始方式声明函数 function say(name){console.log("hello" + name); } 箭头函数 var say = name => conso ...
- promise用法_图解 Promise 实现原理(四):Promise 静态方法实现
作者:Morrain 转发链接:https://mp.weixin.qq.com/s/Lp_5BXdpm7G29Z7zT_S-bQ 前言 Promise 是异步编程的一种解决方案,它由社区最早提出和实 ...
- es6 async函数的基本用法
async函数的基本用法 async函数返回一个 Promise 对象,可以使用then方法添加回调函数.当函数执行的时候,一旦遇到await就会先返回,等到异步操作完成,再接着执行函数体内后面的语句 ...
最新文章
- nginx下的session一致性
- 20180827-Java网络编程
- java最简单的并查集(不想交集合)以及杭电1272
- 几行代码,网盘链接提头来见!
- 如何用python做数据分析统计服_使用python实现数据分析
- Mac OS 查看系统版本信息/硬件信息的命令
- python开发面试笔试题_python集合面试笔试题
- 慢慢人生路,学点Jakarta基础-深入剖析Java的接口和抽象类
- C#使用并行任务库(TPL)
- docker安装,下载docker镜像
- CISP 考试教材《第 8 章 知识域:物理与网络通信安全》知识整理
- linux 配置软件安装源
- js实现360度图片旋转
- 苹果高管参与直播,或将发布新品
- python非技术面试题宝典
- android打地鼠案例
- 天线工程手册_“大神”给工控工程师快速成长的6点建议,看完你会少走弯路...
- 2022安全员-C证考试模拟100题及在线模拟考试
- ADODB , ADODB_lite
- 在Linux下运行你的第一个汇编程序
热门文章
- 用python实现给人脸带圣诞帽子
- Python:日期和时间包datetime的用法
- hp计算机硬盘如何拆下来,大容量时代的前拆----HP S700 Pro 512G SSD开箱拆解应用分享...
- rog枪神7超竞版评测 rog枪神7超竞版 参数配置
- 2013.6.3 正能量
- java 转为负数,java怎么转换一个负数的16进制
- SpringBoot + Vue + ElementUI 开发的后台管理系统
- 微型计算机内存条怎么拆,笔记本内存如何拆卸安装及增加内存条?
- java jxl_java 中JXL操作Excel实例详解
- IMB X3650配置RAID