js-Promise(承诺)实战javascript的特性
⼀.为什么需要promise?
开发⽹站的过程中,我们经常遇到某些耗时很长的javascript操作。其中,既有异步的操作(⽐如ajax读取服务器数据),也有同步的操作(⽐如遍历⼀个⼤型数组),它们都不是⽴即能得到结果的。
通常的做法是,为它们指定回调函数(callback)。即事先规定,⼀旦它们运⾏结束,应该调⽤哪些函数。
Javascript 采⽤回调函数(callback)来处理异步编程。从同步编程到异步回调编程有⼀个适应的过程,但是如果出现多层回调嵌套,也就是我们常说的回调⾦字塔(Pyramid of Doom),绝对是⼀种糟糕的编程体验。于是便有了 Promises/A , Promises/A +等规范,⽤于解决回调⾦字塔问题。
Promise将原来回调地狱中的回调函数,从横向式增加巧妙的变为了纵向增长。以链式的风格,纵向的书写,使得代码更加的可读和易于维护。
去除回调⾦字塔
Promise历史:早在1976年就有⼈提出Promise 的概念。之后的计算机语⾔发展中,很多语⾔都提供了与 Promise 相关的特性。⽽对于Javascript语⾔来说,最早让⼤家⼴泛接触的 Promise 相关的库是由 jQuery.Deferred()
对象实现的。随着 Promise/A+ 标准规定了⼀系列 API,实现该标准的库如⾬后春笋版涌现了出来,在最新的ES6中已经提供了Promise的内置对象,成为了基础库。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。