js 迴圈中的非同步

2022-07-31 11:21:14 字數 2326 閱讀 1977

for (var i = 0; i < 5; i++) 

//0

//1

//2//3

//4//加入延時

for (var i = 0; i < 5; i++) , 1000 * i);

} //5 //立即執行

//5 //一秒後

//5 //一秒後

//5 //一秒後

//5 //一秒後

var output = function (i) , 1000 * i);

}for (var i = 0; i < 5; i++)

//0 //立即執行

//1 //一秒後

//2 //一秒後

//3 //一秒後

//4 //一秒後

for (let i = 0; i < 5; i++) , 1000 * i);

}//0 //立即執行

//1 //一秒後

//2 //一秒後

//3 //一秒後

//4 //一秒後

for (var i = 0; i < 5; i++) , i * 1000);

})(i); }

//0 //立即執行

//1 //一秒後

//2 //一秒後

//3 //一秒後

//4 //一秒後

for (let i = 0; i < 5; i++) , 1000 * i, i);

}//0 //立即執行

//1 //一秒後

//2 //一秒後

//3 //一秒後

//4 //一秒後

for (var i = 0; i < 5; i++) , i * 1000);

})(i);

} //5 //立即執行

//5 //一秒後

//5 //一秒後

//5 //一秒後

//5 //一秒後

for (var i = 0; i < 5; i++) )(i), i * 1000);

} //0

//1

//2//3

//4

settimeout(function() , 0);

new promise(function executor(resolve)

console.log(3);

}).then(function() );

console.log(5);

裡面的**屬於 microtask, 會在當前 event loop 的最後執行,

//而 settimeout 內的**屬於 macrotask, 會在下乙個 event loop 中執行

//2//3

//5//4

//1

async function xx() , 1000)})}

console.log('continue')

console.timeend();//default: 5006.636ms

}xx();

//0 //一秒後

//1 //一秒後

//2 //一秒後

//3 //一秒後

//4 //一秒後

//continue //async結束後才立即顯示

//koa2 的 delay

async function delay(time) , time);

});}; await delay(2000);

for迴圈中的非同步處理(非同步變同步)

前沿 參考es6語法的async await的處理機制 先上一段 function getmoney compute.exec 這是個非同步方法,在裡面處理一些實際業務 這時候列印出來的很可能就是300,300,300 因為非同步for迴圈還沒有等非同步操作返回promise物件過來i值已經改變 a...

js迴圈中呼叫ajax

var i for i 0 i 10 i 在for迴圈中呼叫ajax方法 補充頁面上的資料,這樣寫是錯誤的,他不會每執行一次for迴圈就執行一次ajax方法,而是等for迴圈結束才去執行ajax方法,所以導致ajax只被執行一次。然而當修改如下 for i 0 i 10 i 與上面不同的是在每次呼叫...

迴圈中呼叫非同步介面獲取資料

整體思路就是 先存陣列,然後迴圈生成每乙個promise,然後用promise.all來呼叫,then的時候返回的是乙個結果陣列。1 首先定義迴圈裡的非同步請求 getinfo item index then res 2 newslist為開始介面獲取的新聞列表,對新聞列表進行迴圈,得到乙個prom...