page contents

Promise解决了什么问题?

轩辕小不懂 发布于 2021-12-22 13:42
阅读 492
收藏 0
分类:WEB前端开发
2710
Nen
Nen
- 程序员

在工作中经常会碰到这样一个需求,比如我使用ajax发一个A请求后,成功后拿到数据,需要把数据传给B请求;那么需要如下编写代码:

let fs = require('fs')

fs.readFile('./a.txt','utf8',function(err,data){

 fs.readFile(data,'utf8',function(err,data){

 fs.readFile(data,'utf8',function(err,data){

 console.log(data)

 })

 })

})

上面的代码有如下缺点:
后一个请求需要依赖于前一个请求成功后,将数据往下传递,会导致多个ajax请求嵌套的情况,代码不够直观。
如果前后两个请求不需要传递参数的情况下,那么后一个请求也需要前一个请求成功后再执行下一步操作,这种情况下,那么也需要如上编写
代码,导致代码不够直观。
Promise出现之后,代码变成这样:
let fs = require('fs')
function read(url){
 return new Promise((resolve,reject)=>{
 fs.readFile(url,'utf8',function(error,data){
 error && reject(error)
 resolve(data)
 })
 })
}
read('./a.txt').then(data=>{
 return read(data)
}).then(data=>{
 return read(data)
}).then(data=>{
 console.log(data)
})
这样代码看起了就简洁了很多,解决了地狱回调的问题。
请先 登录 后评论