浅谈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){
   		   .......
   		})
   })
})
发布了17 篇原创文章 · 获赞 0 · 访问量 383

猜你喜欢

转载自blog.csdn.net/huige232508/article/details/104772162