您的位置:首页 > 职场人生

前端面试——回调、Promise、Generator和async-await

2018-09-19 21:34 561 查看

首先我们回顾一下javascript异步的发展历程。

ES6 以前:

  回调函数(callback):nodejs express 中常用,ajax中常用。

ES6:

  promise对象:nodejs最早有bluebird promise的雏形,axios中常用。

  generator函数:nodejs koa框架使用率很高。

ES7:

  async/await语法:当前最常用的异步语法,nodejs koa2 完全使用该语法。

 

回调函数CALLBACK:

将一个函数当做参数传到另一个函数里,当那个函数执行完后,再执行传进去的这个函数这个过程就叫做回调。

Promise对象:

promise 对象用于一个异步操作的最终完成(或最终失败)及其结果的表示。

简单地说就是处理一个异步请求。我们经常会做些断言,如果我赢了你就嫁给我,如果输了我就嫁给你之类的断言。

这就是promise的中文含义:断言,一个成功,一个失败。

举个例子,方便大家理解:

promise构造函数的参数是一个函数,我们把它称为处理器函数。

处理器函数接收两个函数reslove和reject作为其参数,当异步操作顺利执行则执行reslove函数, 当异步操作中发生异常时,则执行reject函数。

 

 

async-await

async函数返回一个promise对象,如果在async函数中返回一个直接量,async会通过Promise.resolve封装成Promise对象。
我们可以通过调用promise对象的then方法,获取这个直接量。

await会暂停当前async的执行,await会阻塞代码的执行,直到await后的表达式处理完成,代码才能继续往下执行。

await后的表达式既可以是一个Promise对象,也可以是任何要等待的值。

如果await等到的是一个 Promise 对象,await 就忙起来了,它会阻塞后面的代码,等着 Promise 对象 resolve,然后得到 resolve 的值,作为 await 表达式的运算结果。

 

 

阅读更多
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: