setTimeout和Promise執行順序

2021-09-26 10:29:55 字數 694 閱讀 6965

script(主程式**)——>process.nexttick——>promise——>settimeout

i) 主體部分: 定義promise的構造部分是同步的,

因此先輸出2 ,主體部分再輸出6(同步情況下,就是嚴格按照定義的先後順序)

ii)process.nexttick: 輸出5

iii)promise: 這裡的promise部分,嚴格的說其實是promise.then部分,輸出的是3,4

iv) settimeout : 最後輸出1

綜合的執行順序就是: 2——>6——>5——>3——>4——>1

settimeout(function(),0);

new promise(function(resolve,reject),0)

}).then(function()).then(function());

process.nexttick(function());

console.log(6);

//輸出的是 2 6 5 1 3 4

這種情況跟我們(2)中的例子,區別在於promise的構造中,沒有同步的resolve,因此promise.then在當前的執行佇列中是不存在的,只有promise從pending轉移到resolve,才會有then方法,而這個resolve是在乙個settimout時間中完成的,因此3,4最後輸出。

setTimeOut和setInterval的區別

區別 window.settimeout function time 設定乙個超時物件,只執行一次,無週期 window.setinterval function time 設定乙個超時物件,週期 互動時間 停止定時 window.cleartimeout 物件 清除已設定的settimeout物件...

setTimeout和setInterval的區別

使用方式 settimeout 表示式,延時時間 setinterval 表示式,互動時間 settimeout 方法是在等待指定時間後執行函式內容,且只執行一次傳入的表示式。click on the button above.an alert box will be displayed after...

setTimeout和setInterval的區別

雖然網上有很多兩者區別的文章,但是經常搞混了,好記性不如爛筆頭,記錄一下。語法 settimeout code,millisec setinterval code,millisec lang 它們都有兩個引數,乙個是將要執行的 字串,還有乙個是以毫秒為單位的時間間隔,當過了那個時間段之後就將執行那段...