初学 Node.js
的朋友总会耗一番周折去理解 Promise
,这里给出一个最简单的 Promise
实现,以帮助对 Promise
还有疑惑的同学彻底理解其实现原理。
这个代码应该是三年前我刚接触
Node.js
的时候写的了,当时也是 Google 不少关于Promise
的文章,现在已经不记得相关链接了。
这个并不是完整的
Promise
逻辑,旨在理解Promise
的实现原理,由于过了太久,我就直接贴出来代码不做解释说明了。如果先前有用过Promise
的话,应该还是较容易理解的; 若是初接触,这个逻辑还是有点绕,先去其它地方了解 Promse 的用法,再多花点时间去理一理这段代码,是值得的。
1 | // Promise |
使用示例:1
2
3
4
5
6
7
8
9
10
11
12
13function sleep(t) {
return new Promise((resolve, reject) => {
setTimeout(function () {
console.log(t)
resolve(t)
}, t)
})
}
sleep(1000)
.then(data => sleep(data + 1))
.then(data => sleep(data + 1))
.then(data => sleep(data + 1))