淺談Promise then與反思

前言:
之前看ES6文檔的時候知道Promise then的基本概念,但是沒有深入理解它。知其然,卻不知其所以然。導致自己在之前的項目中犯了一個很可笑的錯誤。今天寫代碼過程中也遇到了Promise then,藉此機會深入學習下它,也好糾正一下自己的錯誤。

爲什麼要用Promise then
(1)之前多層請求回調:

request(url,params,function(res1){
	request(url,params,function(res2){
		request(url,params,function(res3){
			request(url,params,function(res4){
				......
			})
		})
	})
})

(2)用Promise then後的多層請求回調:

function sendRequest(url,params){
	return new Promise(function(resolve,reject){
       request(url,params,resolve,reject)
	})
}
sendRequest(url,params).then(fuction(data1){
}).then(function(data2){
}).then(function(data3){
}).then(function(data4){
}).then(function(data5){
})...

兩種方式對比起來結果顯而易見,第一種方式層層嵌套比較暈人;第二種方式一目瞭然。Promise的結果在then中回調函數處理,第一個then處理完成後返回結果給作爲第二個then的參數繼續在回調函數處理,依此往後推(前面的輸出作爲後面的輸入,類似於Linux種的管道命令)。

而我之前沒有明白爲啥要使用Promise then,就犯了一個很愚蠢的錯誤!下面是我之前在項目中寫下的可笑的代碼:

sendRequest(url,params).then(function(data1){
	sendRequest(url,params).then(function(data2){
   		sendRequest(url,parmas).then(function(data3){
   		   .......
   		})
   })
})
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章