1.async
async定义的函数,返回一个promise对象。如果你在async定义的函数里返回一个直接量,那么async会把该直接量用promise封装起来,通过resolve输出。所以要访问async返回的结果的时候,使用.then访问
没有返回值的情况下async函数会返回Promise.resolve(undefined)。而且promise的特点是无等待,执行async,会立即执行。
2.await
await要在async里面调用,await在等待表达式,表达式的计算结果可以是promise对象或者其他的值,但是await必须要等到一个值,虽然它可以接受promise,但是他还是要promise resolve的结果才行,才算完成了自己的任务啊。
如果await等到的是一个promise,这下好了,await可霸道了,我下面的代码都不许动,我上面已经动完的就算了,我下面的不许动,等我的promise resolve了,await拿到自己想要的值了,他下面的代码才能继续执行。也就是说,在promise resolve之前,await会阻塞它后面的代码。直到promise resolve了一个值,才会释放,继续执行下面的代码。so: await一定要在async里面调用,不然真的阻塞代码,就完啦!!!
这么理解好一些,就像一个树根,一个async函数就是一个分支,他不会影响主根的生长,即使await阻塞了一个分支的代码,但不会影响主根的生长。
3.作用
两个关键字的优势在于处理then链,唉...,就是promise的优势。我不想举例子了。。。