Es6中處理非同步的方式
阿新 • • 發佈:2018-12-30
一、在javascript
中造成非同步的因素
- 1、定時器
- 2、事件
二、使用Promise
把非同步變成同步
1、關於
promise
的基本使用/** * Promise需要例項化物件 * 裡面是一個函式, * resolve是一個代表成功的函式,如果不呼叫這個函式,下面的函式無法繼續進行 * 下面只能列印"第一個定時器" * reject是一個代表失敗的函式 */ var promise = new Promise((resolve,reject)=>{ setTimeout(()=>{ console.log("第一個定時器"
2、修改上面的程式碼都列印
var promise = new Promise((resolve,reject)=>{ setTimeout(()=>{ console.log("第一個定時器"); resolve(); },3000) }) promise.then(function () { setTimeout(()=>{ console.log("第二個定時器"
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、參考文件