Promise的簡單用法

天寧哦 發表於 2022-11-28

什麼是Promise?

Promise 是非同步程式設計的一種解決方案,其實是一個建構函式,自己身上有all、reject、resolve這幾個方法,原型上有then、catch等方法。
Promise物件有以下兩個特點。

(1)物件的狀態不受外界影響。Promise物件代表一個非同步操作,有三種狀態:pending(進行中)、fulfilled(已成功)和rejected(已失敗)。只有非同步操作的結果,可以決定當前是哪一種狀態,任何其他操作都無法改變這個狀態。這也是Promise這個名字的由來,它的英語意思就是“承諾”,表示其他手段無法改變。

(2)一旦狀態改變,就不會再變,任何時候都可以得到這個結果。Promise物件的狀態改變,只有兩種可能:從pending變為fulfilled和從pending變為rejected。只要這兩種情況發生,狀態就凝固了,不會再變了,會一直保持這個結果,這時就稱為 resolved(已定型)。如果改變已經發生了,你再對Promise物件新增回撥函式,也會立即得到這個結果。這與事件(Event)完全不同,事件的特點是,如果你錯過了它,再去監聽,是得不到結果的。

簡單使用

寫個Promise函式

function aa(){
	return new Promise((resolve, reject)=>{
		//做一些非同步操作
		setTimeout(function(){
			resolve('執行完成Promise,要返回的資料可以任何資料例如介面返回資料');
		}, 2000);
	});
}

呼叫Promise函式

//第一種鏈式呼叫
aa().then(res=>{
	console.log('測試前');
	console.log(res);
	console.log('測試後');
})
//第二種 async await
async function callaa(){
	console.log('測試前');
	let a = await aa();
	console.log(a);
	console.log('測試後');
}
callaa();