一、在javascript
中造成异步的因素
- 1、定时器
- 2、事件
二、使用Promise
把异步变成同步
1、关于
promise
的基本使用/** * Promise需要实例化对象 * 里面是一个函数, * resolve是一个代表成功的函数,如果不调用这个函数,下面的函数无法继续进行 * 下面只能打印"第一个定时器" * reject是一个代表失败的函数 */ var promise = new Promise((resolve,reject)=>{ setTimeout(()=>{ console.log("第一个定时器"); },3000) }) promise.then(function () { setTimeout(()=>{ console.log("第二个定时器"); },3000) })
2、修改上面的代码都打印
var promise = new Promise((resolve,reject)=>{ setTimeout(()=>{ console.log("第一个定时器"); resolve(); },3000) }) promise.then(function () { setTimeout(()=>{ console.log("第二个定时器"); },3000) })
3、在
resolve
传递参数到then
的函数接收var promise = new Promise((resolve,reject)=>{ setTimeout(()=>{ console.log("第一个定时器"); resolve('你好'); },3000) }) promise.then(function (arg) { setTimeout(()=>{ console.log("第二个定时器"); console.log(arg); },3000) })
4、
reject
的使用与resolve
一样的
三、Generator
函数的介绍
1、定义方式(*可以靠前、靠后、中间)
function * foo(){ yield '我是第一个参数'; }
2、调用方式
var f = foo(); console.log(f.next());
3、
Generator
函数与普通函数的区别- 1、定义函数的时候在
function
与函数名称之间多了一个*
- 2、
Generator
函数使用yield
作为返回数据 - 3、
Generator
函数中可以定义多个yield
返回数据,而普通函数只能是一个return
- 4、
Generator
函数里面也可以有return
与普通函数一样的return
后面的代码不执行 - 5、
Generator
函数与普通函数的调用方式不一样
- 1、定义函数的时候在
4、参考文档
四、async
函数的认识
- 1、参考文档