Promise 实现原理

谈到 Promise 就不得不探讨一下 JS 以前一直以来为人诟病的 “毁掉地狱” 问题。还记得当时写 Jquery 的时候,很容易就写出了下面这种嵌套形式的代码:

1
2
3
4
5
6
7
$.ajax(url1, function(v1) {
$.ajax(url2, { data: v1 }, function(v2) {
$.ajax(url3, { data: v2 }, function(v3) {
// handle v3
})
})
})

而如果我们使用 Promise,结果将会变成下面这样:

1
2
3
4
5
6
7
request(url1).then((v1) => {
return request(url2, { data: v1 })
}).then((v2) => {
return request(url3, { data: v2 })
}).then((v3) => {
// handle v3
})

Promise 的本质是状态机

根据 Promises/A+ 规范,一个 Promise 的内部有三种状态:

  • PENDING
  • FULFILLED
  • REJECTED

[未完待续...]

Posted on

2021-03-16

Updated on

2021-03-16

Licensed under

Comments