什么是Promise?相信大家已经看到不少有关类似的文章,话不多说,直接上干货。
在这里简单的介绍下Promise,Promise有三种状态:
pending:进行中,表示还没有得到想到的结果。
resolved或Fulfilled:已经完成,表示得到了我们想要的异步操作结果。
rejectd:也是已经完成,但是得到的不是我们想要的异步操作结果。
这里要注意下,这三种状态都不受外界的影响,一旦状态改变,就不会在改变,而且状态只能从pending变为从resolved或者状态从pending变为rejected两种情况,这也和Promise英语含义相符合“承诺”。
resolve()和reject()他们的作用将状态改变为resolved和rejected;
Promsie对象中的then方法,用于接收状态改变时的回调函数,then方法有2个参数,第一个回调接收resolved状态的执行,第二个回调用于接收rejected状态的执行(第二个可选,等同于)
catch方法等等价then(null,callback),用于接收rejected状态的执行。
then方法和catch方法返回的都是一个Promise对象,因此我们可以用链式调用,这也是我们回调地狱的一个解决方法。
为什么要用Promise?
如果,我们需要做一个ajax请求,这个ajax请求的其中一个参数,是上一个ajax请求中获取,
现在看起来并没有什么问题,倘若出现更多个ajax的时候就会出现代码臃肿,就是我们上面所说的回调地狱,Promise能够解决这个问题。
封装了一个get请求的方法,对于ajax请求可以改写成链式调用,这就解决了回调地狱的问题
这段时间看了大量的东西,加长时间没写有点生疏,后续还会继续更新Generator,async/await
参考:知乎 ES6-阮一峰