promise物件是用來進行非同步操作的,是將非同步操作以同步的流程表達出來, 避免了層層巢狀的**函式,promise物件的本質是狀態機,通過設定不同的狀態來執行不同的操作
//建立乙個promise例項物件
let promise = new promise((resolve, reject) =>,2000);
});promise.then((data) =>, (error) =>);
console.log('2222');
a、建立promise物件:執行非同步操作且設定promise狀態
b、呼叫promise的then():接收設定的promise狀態,接收非同步操作執行成功或者失敗的資料
a、建立promise物件let promise = new promise((resolve, reject) => else
})b、呼叫promise的then()
promise.then(
function
( result =>console.log(result),
errormsg =>alert(errormsg)
))
1、pending: 初始化狀態
2、fullfilled: 成功狀態
3、rejected: 失敗狀態可以在promise的建構函式的引數對應的**函式中設定,如果非同步操作成功,可以通過resolve方法設定為成功狀態(fullfilled),如果非同步操作失敗,可以通過rejected方法設定為失敗狀態(rejected)
//建立乙個promise例項物件
let promise = new promise((resolve, reject) =>,2000);
});promise.then((data) =>, (error) =>);
console.log('2222');
用promise.then()方法可以來接收成功或者失敗的狀態,promise.then()的引數是兩個**函式,乙個是操作成功的**函式,乙個是操作失敗的**函式
//建立乙個promise例項物件
let promise = new promise((resolve, reject) =>,2000);
});promise.then((data) =>, (error) =>);
console.log('2222');
使用promise可以封裝處理非同步的比如ajax、檔案處理等耗時操作
1doctype html
>
2<
html
lang
="en"
>
3<
head
>
4<
meta
charset
="utf-8"
>
5<
title
>1、**函式做非同步
title
>
6head
>
7<
body
>815
<
script
>
16//
function async_fun(param),1000);
20//}21
2223
//想要接受到引數可以用**函式
24//
function async_fun(param,callback),1000);
29//}30
//31
//async_fun(1,function (a) );
3435
36//
非同步操作1做完了再做非同步操作2
37//
非同步操作2做完了再做非同步操作3
3839
//function async_fun(param,callback),1000);
43//}44
45//
非同步的流程來做非同步的操作
46//
async_fun(1,function (a) );
55//
});56
//});
57//
});58
59//
同步的流程來做非同步的操作
60//
async_fun(1,function (a) );
63//
async_fun(2,function (a) );
66//
async_fun(3,function (a) );
69//
async_fun(4,function (a) );
7273
script
>
74body
>
75html
>
1doctype html
>
2<
html
lang
="en"
>
3<
head
>
4<
meta
charset
="utf-8"
>
5<
title
>promise物件
title
>
6head
>
7<
body
>864
<
script
>
65//
promise物件最核心的:
66//
用同步的流程來解決非同步的操作
6768
//promise的本質:
69//
promise的本質是狀態機,也就是通過設定不同的狀態,
70//
來告訴使用者非同步操作是執行成功了還是執行失敗了
7172
//function async_fun(param),1000);
76//}77
//promise是乙個建構函式
78//
promise有乙個引數,這個引數是**函式
79//
這個**函式有兩個引數:resolve, reject
80//
resolve就是設定非同步操作執行成功之後怎麼做
81//
reject就是設定非同步操作執行失敗之後怎麼做
82//
並且resolve和reject也是**函式
8384
//resolve**函式就是將promise的狀態從pending狀態設定為了成功 的狀態resolved
85//
resolve**函式的另外乙個作用就是向外面傳遞非同步操作執行成功之後的資料
8687
//reject**函式就是將promise的狀態從pending狀態設定為了失敗 的狀態rejected
88//
reject**函式的另外乙個作用就是向外面傳遞非同步操作執行失敗之後的資料
89let promise
=new
promise(
function
(resolve, reject) );
94//
如果非同步操作執行失敗
95reject(
'非同步操作執行失敗111');
96},
1000
);97
});98
console.log(promise);
99//
promise的then方法可以接受到resolve和reject傳遞過來的資料
100//
then方法裡面有兩個引數,這兩個引數都是**函式
101promise.then((data)
=>
,(error)
=>
);106
107108
//promise的狀態
109//
初始狀態:pending
110//
非同步操作執行成功狀態:resolved
111//
非同步操作執行失敗狀態:rejected
112113
114115
116script
>
117body
>
118html
>
ES6課程 6 解構賦值
1 解構賦值就是從物件或陣列中提取資料,並賦值給變數 多個 也就是對陣列或物件的批量賦值 2 物件的解構賦值 把物件的屬性name和age對應的值分別賦值給變數name和age let 3 陣列的解構賦值 把陣列中的1和 fry 分別賦值給變數a和b let a,b 1,fry 依次將物件裡面的na...
石川es6課程 6 解構賦值
結構相同一一對應的方式賦值 let json,arr,num,str 1,2,3 8,str let json,arr,num,str 1,2,3 8,str console.log json,arr,num,str 1.左右兩邊結構必須一樣 let a,b 報錯。左右兩邊結構必須一樣 2.右邊必須...
石川es6課程 18 ES6 複習
無論在講課和學習中,複習總結都是很重要變數 let const 宣告方式 能否重複宣告 作用域型別 是否支援變數提公升 var能 函式級變數 是,undefined let不能,不允許在相同作用域內,重複宣告同乙個變數 塊級變數 否,referrenceerror is not defined co...