promise.then属于微任务,理应在dom渲染之前执行,console.log('Hi!');在script里属于宏任务,为什么这里它在,promise.then的前面
因为new Promise会立即执行,内部包含的执行程序是同步任务,resolve()之后进入.then()方法才是异步(微任务)
他会先执行new Promise里面的代码块,但是promise的回调属于微任务这个时候才会在console.log("HI")后面
new Promise时并不属于微任务,他只是new了一个对象,属于正常上下文
在执行有异步,和同步代码的时候 遇到异步会吧异步放到异步堆里开始执行 然后不管有没有执行完毕 都会执行下边的代码 因为你在promis里打印的在放入异步的时候就执行完了,所以还没等执行到打印hi。并不是吧异步任务放入异步堆里不执行,非得等到同步执行完再执行。
因为输出resolve的那个方法属于回调函数。
回调函数在js里面是属于异步函数,也就是说不能用正常的代码执行顺序去看他的操作顺序。你可以把他类似的看作多线程的顺序,但这不属于多线程