js高难知识点1----promise及其语法糖 async await

55 阅读2分钟

说在前面的话

学习前端这么长时间,有些以前的知识的不是模糊了,就是在项目中使用的不多,渐渐的也就遗忘了,特地开了一个掘金号,将那些个人感觉不清晰的知识点统一记录下来,以便于以后的查阅,同时希望可以帮助到大家,与大家共勉。

见题知意

我们在原生的js中如果想要实现异步的操作的话,往往通过回调函数的形式,例如setTimeout()可以在几秒之后获取到我们想要的信息(注意这只是举例,事实上setTimeout并不是真正意义上的异步函数)可是当我们想要获取多个异步数据,例如在3s,5s,6s各获得不同的数据,如果使用传统的回调函数解决,往往会导致嵌套的回调函数层数过多,这也是俗称的回调地狱,对于代码的简洁性来说,这可以说是真正的地狱,因此js急需一种便捷直观的手段来解决这个问题。

promise

promise简单来说就是js所封装的对象,使用时通过new关键字来创建新的promise对象,promise理解起来就如同它的英文翻译,它‘承诺’你在一段时间后会返回给你一段信息,这个一段时间的过程,便是异步操作,一般来说,它常常被用作ajax请求的返回信息获取上,通过对象内自带的函数then,其中的两个回调函数,一个参数是resolve,它返回的是成功的信息,而另一个参数reject返回的是失败的信息,通过这个方法,js内的链式调用便可以解决原本的回调地狱问题。

async await

async await是js所封装的语法糖,被async定义后的函数变成异步函数,所谓异步函数,返回的永远都是promise对象,而await正如其字面意思,只要获取的数据前添加了await,便不再需要调用.then方法便可以直接获取到promise所拿到的数据。