关于回调的唠叨
2017年6月份面试的时候,有个面试小哥哥问我,想要等一个ajax请求完再用这个ajax请求出来的数据做下一个请求你会怎么办?当时只能回答出嵌套的传统方式,回答完他给我介绍了promise,大致讲了javascript的运行机制,随后我回去看了些网上的资料,写了我的第一篇随笔JavaScript 运行机制。最近两天在跳这看nodejs的API,看到一个很头疼的问题,只记得很麻烦,但具体什么,现在也是记不得了(正是如此,才会喜欢记录)。只是看到了一个新的词/组,async/await。有些烦,有些慌,前端进化的这么快,像是没有止境而我只能在后边追赶。对面的前端er还在看jsonp,淡淡的忧伤。
promise
- 三种状态pending、resolved、rejected,函数执行成功返回了resoled,失败rejected;pending执行中。
- promise返回只有promise,如果想使用resolved的数据,调用then。
- promise是异步执行的,pending过程并没有造成阻塞。
async
- 被其修饰的函数的返回会被promise包装。
await
- 等待一个表达式的执行,如果等到了promise对象,就会执行promise中的代码,接收resolved的数据。
- 其他直接字面量也能接接收。
promise和async/await之间
- async/await在业务中时常需要使用promise---await通常是在等待一个promise。
- async/await是对promise链式调用的写法的优化。