在JavaScript中执行异步处理,有经典方法之一的回调函数(4.6.3)。目前为止,我们在setTimeout/setInteval方法、XMLHttpRequest对象等各方面使用了回调函数。回调函数也可以说是JavaScript方言。
但是,如果有连续多个异步处理时,回调函数的嵌套就会很深,1个函数就会变得很臃肿。我们将这样的问题称为回调地狱。
……最开始执行的处理……
……first函数成功之后执行的处理……
……second函数成功之后执行的处理……
……最后执行的处理……
Promise对象的功能就是解决这样的问题。使用Promise对象可以使这样的代码和同步处理一样来写。
虽然只是概念形式的代码,但是和嵌套很深的回调函数相比,一下子易读了很多。
目前为止,jQuery或者AngularJS这样的库/框架也提供了这样的功能。但是,在ES2015中作为Promise对象进行了标准化,不再需要依赖外部库了。
Promise对象正确来说是(不是浏览器对象)JavaScript标准内置对象。但是,因为经常和Ajax通信组合使用,所以为了方便说明而放在本章中一起介绍。