SetTimeOut,promise和async有什么区别?

这个问题主要考的是JS队列加载的问题,三者的排序是:promise>async>setTimeout。具体的举例我就不说了,可以查一下头条的经典面试题,相信剖析的已经很清楚了,我这边大概的说一下。
首先从最简单的setTimeout来说,setTimeout属于延迟方法,会被放倒最后,也就是主线程空闲的时候才会触发;async通常是搭配await使用的,而await使用后它后面的时间会因为让出了线程所以被挂起,这个时候就会去执行promise的.then方法,等promise执行完毕,再去执行await后的事件。
另外值得一说的是,由于async/await是基于promise的,使用上比promise更加简单明了,比如说把promise值当做中间值或者条件语句的时候,async的写法要比promise的.then写法简单的多,而且不需要那么多的return相对明了更容易让人理解,所以很多人已经慢慢地用async/await代替promise了。

相关实例:

  1. 当使用promise值被当做条件语句时的写法:SetTimeOut,promise和async有什么区别?
    使用async/await作为条件语句时的写法:SetTimeOut,promise和async有什么区别?

  2. 当使用Promise作为中间值的写法如下:
    SetTimeOut,promise和async有什么区别?
    使用async/await作为中间值得写法如下:SetTimeOut,promise和async有什么区别?
    从上面的这些列子我们就不难看出,async/await的用法比promise的用法要简单的多,而且从直观上async比promise更加明了、易懂。