日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

ES6中Promise、async和await面試題整理

瀏覽:206日期:2022-06-01 16:36:52
目錄
  • 出題目的:
  • 知識點:
  • 代碼:
  • 附:promise與async await結合使用
  • 總結

學習過程中遇到的一些基礎的Promise、async、await面試題整理。

出題目的:

  • 考察 Promise、async、await 的基礎
  • 考察隊Event Loop、宏任務、微任務的理解

知識點:

  • JS 執行順序:單線程,自上而下、先同步后異步、先微任務后宏任務
  • new promise() -> Promise.resolve(),觸發then
  • new promise((reject)=>{reject()}) -> promise.reject(),觸發catch
  • then 和 catch 內部沒有 throw new Error 相當于 resolve
  • async function 相當于返回 Promise.resolve()
  • await 后面的代碼都是異步的,微任務;setTimeout是宏任務
  • 初始化Promise時,函數內部代碼會被立即執行

代碼:

考點1:Promise.resolve、Promise.reject執行順序

Promise.resolve().then(() => {  // 優先尋找then
		console.log(1);
	}).catch(() => {
		console.log(2);
	})
	// 1
Promise.reject().then(() => {  // 優先尋找catch
		console.log(1);
	}).catch(() => {
		console.log(2);
	})
	// 2

考點2:then 和 catch 內部沒有 throw new Error() 相當于 resolve

Promise.resolve().then(() => {
		console.log(1);
	}).catch(() => {
		console.log(2);
	}).then(() => {
		console.log(3);
	})
	// 1 3
Promise.reject().then(() => {
		console.log(1);
	}).catch(() => {
		console.log(2);
	}).then(() => {
		console.log(3);
	})
	// 2 3
Promise.reject().then(() => {
		console.log(1);
	}).catch(() => {
		console.log(2);
		throw new Error();
	}).then(() => {
		console.log(3);
	})
	// 2 報錯
Promise.reject().then(() => {
		console.log(1);
	}).catch(() => {
		console.log(2);
		throw new Error();
	}).then(() => {
		console.log(3);
	}).catch(() => {
		console.log(4);
	})
	// 2 4

考點3:async function -> 相當于返回一個 Promise.resolve

const res = async function fn() {
	return 100;
}
console.log(res());  // 返回一個resolve狀態的Promise對象 Promise {<fulfilled>: 100}
res().then(()=>{
	console.log(0);
}).catch(()=>{
	console.log(1);
})
// 0

(async function () {
	const a = fn();
	const b = await fn();
	console.log(a);  // Promise {<fulfilled>: 100}
	console.log(b);  // 100
})()

考點4: await 代碼執行順序

async function fn1() {
	console.log("fn1 start");
	await fn2();
	console.log("fn1 end");
}
async function fn2() {
	console.log("fn2 start");
}
console.log("start");
fn1();
console.log("end");
/**
 * 打印順序:
 * start
 * fn1 start
 * fn2 start
 * end
 * fn1 end
 */
async function fn1() {
	console.log("fn1 start");
	await fn2();
	console.log("fn1 end");
	await fn3();
	console.log("fn3 end");
}
async function fn2() {
	console.log("fn2");
}
async function fn3() {
	console.log("fn3");
}
console.log("start");
fn1();
console.log("end");
/**
 * 打印順序:
 * start
 * fn1 start
 * fn2
 * end
 * fn1 end
 * fn3
 * fn3 end
 */

考點5:Promise 與 setTimeout 執行順序

console.log("start");
setTimeout(()=>{
	console.log("setTimeout")
});
Promise.resolve().then(()=>{
	console.log("Promise")
})
console.log("end")
/**
 * 打印順序:
 * start
 * end
 * Promise
 * setTimeout
 */
async function fn1() {
	console.log("fn1 start");
	await fn2();
	console.log("fn1 end");  // await后面的代碼為"微任務代碼"
}
async function fn2() {
	console.log("fn2");
}
console.log("start");
setTimeout(()=>{
	console.log("setTimeout");  // 宏任務 
});
fn1();
console.log("end");
/**
 * 打印順序:
 * start
 * fn1 start
 * fn2
 * end
 * fn1 end
 * setTimeout
 */

附:promise與async await結合使用

昨天看了一道字節外包的面試題

?const list = [1, 2, 3];
? ? const square = num => {
? ? ? ? return new Promise((resolve, reject) => {
? ? ? ? ? ? setTimeout(() => {
? ? ? ? ? ? ? ? resolve(num * num);
? ? ? ? ? ? }, 1000);
? ? ? ? });
? ? }
? ? function test() {
? ? ? ? // 修改這里的代碼
? ? ? ? list.forEach(async x => {
? ? ? ? ? ? const res = await square(x);
? ? ? ? ? ? console.log(res);
? ? ? ? });
? ? }
? ? test()

需要修改的是把同步執行的數組替換成換成異步打印。

在測試以后我們可以-驗證,forEach和for循環不同的是for循環可以修改數組的值,且forEach取不到具體某一項的值,這里的異步說的是每執行一次數組循環,就執行一步test()方法,

const list = [1, 2, 3];
const square = num => {
?? ?return new Promise((resolve, reject) => {
?? ??? ?setTimeout(() => {
?? ??? ??? ?resolve(num * num);
?? ??? ?}, 1000);
?? ?});
}
?function test() {
? for(let x of list) {
? ? var res = await square(x)
? ? console.log(res)
? }
}
test()

總結

到此這篇關于ES6中Promise、async和await面試題整理的文章就介紹到這了,更多相關ES6 Promise、async、await面試題內容請搜索以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持!

標簽: JavaScript
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
激情综合自拍| 亚洲我射av| 国产一区导航| 欧美~级网站不卡| 免费视频亚洲| 免费美女久久99| 日韩国产精品久久久久久亚洲| 中文字幕亚洲精品乱码| 在线免费观看亚洲| 免费在线观看不卡| 日韩中文欧美在线| 日韩av一二三| 高清久久一区| 99久久婷婷这里只有精品| 免费久久精品视频| 久久精品国产精品亚洲毛片| 日韩欧美中文| 久久高清一区| 国产欧美日韩精品高清二区综合区 | 国产精品videossex| 欧美亚洲tv| 久久99蜜桃| 成人午夜亚洲| 欧美特黄一区| 免费看久久久| 国精品一区二区三区| 免费成人性网站| 欧美激情麻豆| 亚洲一区欧美激情| 国产资源在线观看入口av| 亚洲日产国产精品| 999国产精品999久久久久久| 欧美日韩91| 午夜欧美视频| 精品国产乱码久久久| 国产色综合网| 亚洲伊人精品酒店| 精品一区毛片| 国语精品一区| 国产精品一在线观看| 日韩亚洲国产欧美| sm久久捆绑调教精品一区| 激情综合五月| 国产不卡人人| 日本免费一区二区视频| 亚洲成人精品| 精品久久久中文字幕| 日韩1区2区3区| 在线视频观看日韩| 日本午夜大片a在线观看| 国产91欧美| 日韩av中文字幕一区二区| 日韩精品一卡二卡三卡四卡无卡| 中文字幕高清在线播放| 天堂中文av在线资源库 | 欧美日韩一区二区三区四区在线观看 | 激情久久五月| 久久91导航| 亚洲午夜久久| 爽好久久久欧美精品| 久久九九精品| 久久高清国产| 亚洲精品一级二级三级| 日韩欧美精品一区二区综合视频| 久久视频一区| 久久精品中文| 水野朝阳av一区二区三区| 激情91久久| 午夜久久av| 国产一精品一av一免费爽爽| 国产精品欧美大片| 国产高清日韩| 午夜精品成人av| 蜜臀国产一区| 欧美成人久久| 亚洲精品黄色| 欧美1区二区| 高清日韩中文字幕| 日韩午夜av| 午夜亚洲福利| 国产精品成人3p一区二区三区| 免费在线亚洲欧美| 国产精品麻豆久久| 视频一区视频二区中文字幕| 日韩av中文在线观看| 麻豆视频久久| 亚洲成人二区| 中文字幕一区二区三区四区久久| 视频一区中文字幕国产| 午夜电影一区| 久久伊人久久| 日韩网站中文字幕| 国产欧美日韩一区二区三区四区| 日韩精品首页| 一区二区精品| 尹人成人综合网| 97se综合| 国产精品毛片久久久| 日韩一区二区在线免费| 亚洲专区视频| 亚洲福利免费| 国产在线一区不卡| 国产视频一区在线观看一区免费| 日本伊人久久| 神马午夜在线视频| 日韩区欧美区| 久久一二三区| 激情91久久| 精品丝袜久久| 69堂精品视频在线播放| 99精品99| 日韩视频一区| 夜夜嗨一区二区| 国产精品毛片一区二区三区| 国产精品一区二区av交换 | 99视频精品| 欧美亚洲日本精品| 麻豆精品久久久| 久久99久久久精品欧美| 精品国产乱码久久久| 蜜臀av亚洲一区中文字幕| 不卡一区综合视频| 黄毛片在线观看| 日韩欧美视频专区| 国产福利片在线观看| 国产日韩在线观看视频| 亚洲综合五月| 红桃视频欧美| 欧美色图一区| 久久中文亚洲字幕| 亚洲高清毛片| 精品91福利视频| 国产图片一区| 日韩av中文字幕一区二区| 亚洲精品乱码| 精品欧美日韩精品| 成人在线免费观看网站| 久久久久一区| 久久国产精品亚洲77777| 免费不卡在线视频| 日韩精品一区二区三区中文字幕| 亚洲久草在线| 91精品国产自产在线丝袜啪| 日本色综合中文字幕| 久久男人av| 亚洲五月婷婷| 国产尤物精品| 日本午夜精品一区二区三区电影 | 久久爱www成人| 日本一区二区三区中文字幕| 性欧美长视频| 欧美片网站免费| 中文字幕在线视频久| 奶水喷射视频一区| 国产日韩欧美高清免费| 日韩中文字幕| 精品国产乱码久久久| 伊人久久成人| 久久麻豆视频| 日韩精品一区第一页| 日韩av自拍| 日韩1区2区3区| 亚洲高清不卡| 国产精品国码视频| 亚洲综合电影一区二区三区| 国产精品极品国产中出| 国产偷自视频区视频一区二区| 久久尤物视频| 亚洲欧美久久精品| 国产精品久久久久久久久妇女| 日本一区中文字幕| 91嫩草精品| 午夜国产精品视频| 超碰成人av| 97精品久久| 久久九九国产| 另类专区亚洲| 日韩有码av| 日韩大片在线观看| 国产成人在线中文字幕| 欧美一级二级视频| 亚洲免费黄色| 蜜臀久久99精品久久一区二区| 美女久久久久久 | 欧美成人a交片免费看| 国产乱码精品| 欧美/亚洲一区| 九一精品国产| 日韩成人a**站| 精品三级国产| 精品久久久亚洲| 国产91在线播放精品| 久久香蕉网站| sm久久捆绑调教精品一区| 免费日韩一区二区三区| 久久av中文| 国产精品亚洲人成在99www| 国产午夜精品一区在线观看| 国产欧美一区二区三区国产幕精品 | 精品日韩在线|