前端学习之路2-JavaScript未来的函数

生成器与promise是ES6的新特性。在异步操作中占用的比重非常大。谈到异步,长响应函数等的问题,与浏览器的单线程执行模型是密切相关的。

生成器

生成器是一种特殊类型的函数。当从头到尾运行标准函数时,它最多只生成一个值。然而生成器函数会在几次运行请求中暂停,因此每次运行都可能会生成一个值。虽然生成器对JavaScript来说还是个新特性,其实它已经在Pyhton、PHP和C#中存在很长时间了
下面的例子是回调函数进行多个操作的例子,因为异步特性需要很多处理代码整体变得繁琐易错,充斥大量错误处理。
在这里插入图片描述
通过生成器:
在这里插入图片描述
对生成器进行遍历可以使用 gen.next()方法,也可以用for-of语法糖。
在这里插入图片描述

promise

promise对象是对我们现在尚未得到但将来会得到值的占位符
在这里插入图片描述
构造方法的参数是一个执行函数(executor function),它包含两个参数resolve和reject。当把两个内置函数:resolve和reject作为参数传入Promise构造函数后,执行函数会立刻调用。我们可以手动调用resolve让承诺兑现,也可以当错误发生时手动调用reject。
代码调用Promise对象内置的then方法,我们向这个方法中传入了两个回调函数:一个成功回调函数和一个失败回调函数。当承诺成功兑现(在promise上调用了resolve),前一个回调就会被调用,而当出现错误就会调用后一个回调函数(可以是发生了一个未处理的异常,也可以是在promise上调用了reject)。

为什么要使用Promise?

  • 简单回调函数的异常丢失(待事件循环的解释)
  • 回调地狱

用法

  • 链式调用
getJSON("")
	.then(a => getJSON(a))
	.then(b=> getJSON(b))
	.then(c=> getJSON(c))
	.catch(error => fail("error")
  • 等待多个
Promise.all([getJSON(a),
					getJSON(b),
					getJSON(c)])
				.then( a=> console.log(a))
				.catch(err => fail("error"))
  • 竞赛
Promise.race([getJSON(a),
					getJSON(b),
					getJSON(c)])
				.then( a=> console.log(a))
				.catch(err => fail("error"))

async

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值