Promise學習探究

學習熟知吧,原理仍是繼續吧promise

例子1:
var isGeted; 
function getRet(){
	return new Promise(function(resolve, reject) {
		//一些異步操做
  		if(isGeted){
  			resolve("yYYYYYYY")
  		}
  		else{
  			reject("NNNNNNNNNNNNNNNNNN")
  		}
	});
}
isGeted=true;
getRet().then(function(data){
	console.log("返回數據:"+data)
});




isGeted=false;
getRet().then(function(data){
	console.log("返回數據:"+data)
}).catch(function(err){
	console.log("錯誤:"+err)
});



例子2:
Promise原理探究:
var promise1 = new Promise(function(resolve, reject) {
  
	//某個異步方法
	setTimeout(function() {
    
		resolve('foo');
  
	}, 300);

});


promise1.then(function(value) {
  
	console.log(value);
  
});


console.log(promise1);  //返回:promise對象,狀態是pending   "foo"
console.log(promise1);  //返回:promise對象,狀態是resolved
 

promise像一個代理,異步方法不知道執行結果,promise預約好,成功執行某方法,失敗執行某方法,讓異步方法按照成功與失敗的設定路線去執行。
又像是個狀態管理工具,狀態只有三種:resolved,rejected,pending
pending---->resolved
pending---->rejected


promise1.then(function(value) {
  
	console.log(value);
  
}).catch(function(err){
	
});

then其實接受兩個函數參數,以下:
promise1.then(function(value) {
  
	console.log(value);
  
},function(err){
	console.log(err);
})
一個是resolve函數,一個是reject函數。


new Promise後就會被執行一次,因此通常外面包成一個函數,如:
var funOne = function(){
	return new Promise(function(resolve,reject){

	})
}
funOne.then().then().catch().finally().race().all()等等。

  

略。異步

相關文章
相關標籤/搜索