async/await 个人见解(一天一篇防止停滞)

217 阅读2分钟

    async和await说实话我觉得阮一峰老师的入门教程已经说的很详细了,也很好学,这里就不会展开基础的教学知识了。

    但是有一些比较细微的见解还是记录下来比较好。我只能尽量写的大家都能看得懂(因为我很喜欢类比其他的方法)。也希望大家能够指正我的思想。

    async在我看来它并不是什么新的技术新的思想。  从回调地狱 =》 Promise  经历的只是规范回调,也就是大家都统一的使用这种简洁的方法去写回调函数了。并不是es6带来的,其实大家在es5也可以封装的很好用。本质上只是一种思想。

    async/await 也类似于这种情况,它规范了promise。使得其的触发顺序更为一目了然了。

现在有一个需求,需要在获取文件数据的时候,再对文件数据进行处理。

我们会这样去处理它。

new Promise((resolve, resject) => {
  setTimeout(() => {
    resolve(data)
  }, 1000)  
}).then((data) => {
    ...处理数据
})

通过模拟获取数据的异步流程,我们可以使用then来控制这个异步流程的顺序,使得在获得数据之后,才对数据处理。 使用async/await就可以这样。

async getData() {
    setTimeout(() => {
    return data
  }, 1000)
}

async getArticle() {
    let data = await getData()
    ...处理数据
}

可以发现其实async/await能做的Promise也可以(大多数情况下)。

只是async使得语义更加清晰了,我们可以一目了然的清楚这段代码发生了什么。

现在的异步按序的流程还是很简单,只有两步,一旦逻辑麻烦起来,你会很感谢es6有async这个东西,这简直在处理异步按序上太好用了。