日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

不要在循環await啦,異步操作的六個最佳實踐!

來源: 責編: 時間:2024-04-15 18:12:41 217觀看
導讀Hello,大家好,我是 Sunday。前兩天有個同學在面試中被問到了一個問題:“如果在請求多個不同的接口,那么應該如何去做?” 該同學回答說:“我們可以把這些接口放到一個數組中,然后通過 for 循環來循環請求!”嗯...這確是是一個

Hello,大家好,我是 Sunday。Shz28資訊網——每日最新資訊28at.com

前兩天有個同學在面試中被問到了一個問題:“如果在請求多個不同的接口,那么應該如何去做?” 該同學回答說:“我們可以把這些接口放到一個數組中,然后通過 for 循環來循環請求!”Shz28資訊網——每日最新資訊28at.com

嗯...這確是是一個方式,不過這并不好。再加上異步問題現在已經成了面試中的常見問題,所以,今天咱們就來說一下 異步請求的最佳實踐,幫助大家解決異步編程,以及面試問題。Shz28資訊網——每日最新資訊28at.com

01:不使用 await 的循環請求

我們不應該在循環內使用 await。 而是可以利用 promise.all 方法:Shz28資訊網——每日最新資訊28at.com

// ?async function fn(reqs) {  const results = [];  for (const req of reqs) {    // 每次循環迭代都會延遲到整個異步操作完成    results.push(await req);  }  return results;}// ?async function fn(reqs) {  // 存儲所有異步操作的 Promise  const promises = reqs.map((req) => req);  // 所有異步操作都已經開始,現在等待它們全部完成  const results = await Promise.all(promises);  return results}

02:不要在 promise 中執行返回操作

不要在 Promise 構造函數中返回值。 從那里返回的值是無用的。 它們也不影響 Promise 的狀態。Shz28資訊網——每日最新資訊28at.com

  • 正確的方法是使用 resolve 傳遞值。
  • 如果有錯誤,則使用 reject 傳遞錯誤。
// ?new Promise((resolve, reject) => {    // 返回沒有意義    if (b) {        return result;    }});// ?new Promise((resolve, reject) => {    // 利用 resolve 傳遞    if (b) {        resolve(result);        return;    }});

03:避免競態問題

看以下代碼,你認為最終打印會是多少?Shz28資訊網——每日最新資訊28at.com

// ?let totalPosts = 0;async function getPosts(userId) {  // 模擬獲取用戶的帖子數量  const users = [{ id: 1, posts: 5 }, { id: 2, posts: 3 }];  // 模擬異步延遲  await sleep(Math.random() * 1000);  // 返回對應用戶的帖子數量  return users.find((user) => user.id === userId).posts;}async function sleep (time) {  return new Promise((resolve, reject) => {    setTimeout(() => {      resolve()    }, time)  })}async function addPosts(userId) {  // 將用戶的帖子數量加到總帖子數上  totalPosts += await getPosts(userId);}// 并行地獲取兩個用戶的帖子數量,并在全部獲取完畢后輸出總帖子數await Promise.all([addPosts(1), addPosts(2)]);console.log('帖子數量:', totalPosts);

執行以上代碼,你可能會打印 3 或 5,而不是 8。Shz28資訊網——每日最新資訊28at.com

這個原因就是因為 競態條件 問題而導致的。當在單獨的函數調用中更新值時,更新不會反映在當前函數作用域中。 因此,這兩個函數都將其結果添加到初始的 TotalPosts 值 0 中。Shz28資訊網——每日最新資訊28at.com

以下是避免競態條件的方式:Shz28資訊網——每日最新資訊28at.com

// ?let totalPosts = 0;async function getPosts(userId) {  const users = [{ id: 1, posts: 5 }, { id: 2, posts: 3 }];  await sleep(Math.random() * 1000);  return users.find((user) => user.id === userId).posts;}async function sleep (time) {  return new Promise((resolve, reject) => {    setTimeout(() => {      resolve()    }, time)  })}async function addPosts(userId) {  const posts = await getPosts(userId);  totalPosts += posts; // 變量被讀取并立即更新}await Promise.all([addPosts(1), addPosts(2)]);console.log('帖子數量:', totalPosts);

04:避免回調地獄

這個問題大家應該很好理解,直接看代碼即可Shz28資訊網——每日最新資訊28at.com

// ?async1((err, result1) => {  async2(result1, (err, result2) => {    async3(result2, (err, result3) => {      async4(result3, (err, result4) => {        console.log(result4);      });    });  });});// ?const result1 = await asyncPromise1();const result2 = await asyncPromise2(result1);const result3 = await asyncPromise3(result2);const result4 = await asyncPromise4(result3);console.log(result4);

05:避免直接返回 await

盡量避免直接返回 await ,特別是在需要 try..catch 的時候:Shz28資訊網——每日最新資訊28at.com

// ?async () => {  try {    return await getUser(userId);  } catch (error) {    // 輸出錯誤  }}// ?async () => {  try {    const user = await getUser(userId);    return user;  } catch (error) {    // 輸出錯誤  }}

06:reject 最好配合 Error 使用

// ?Promise.reject('這是一個錯誤');// ?Promise.reject(new Error('這是一個錯誤'));


Shz28資訊網——每日最新資訊28at.com

本文鏈接:http://m.www897cc.com/showinfo-26-83620-0.html不要在循環await啦,異步操作的六個最佳實踐!

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 要么返回錯誤值,要么輸出日志,別兩樣都做

下一篇: 聊聊如何使用 Python 實現 RSA 加密

標簽:
  • 熱門焦點
Top 日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不
国产精品亚洲一区| 欧美精品一区二区三区很污很色的| 亚洲伦伦在线| 在线视频精品| 亚洲欧美区自拍先锋| 久久精品国产99精品国产亚洲性色| 久久琪琪电影院| 欧美精品一区二区三区在线看午夜| 欧美视频亚洲视频| 国产一区二区丝袜高跟鞋图片| 在线免费观看日本一区| 一本色道久久综合亚洲91| 欧美一区二区视频观看视频| 蜜桃av综合| 国产精品裸体一区二区三区| 国外成人在线视频| 日韩午夜剧场| 欧美中在线观看| 欧美人交a欧美精品| 国产香蕉97碰碰久久人人| 亚洲国产裸拍裸体视频在线观看乱了中文 | 久久亚洲欧洲| 欧美日韩在线直播| 激情综合久久| 亚洲性视频h| 蜜臀91精品一区二区三区| 国产精品jizz在线观看美国 | 亚洲卡通欧美制服中文| 欧美一级在线亚洲天堂| 欧美激情久久久久| 国产亚洲欧美aaaa| 中文亚洲字幕| 欧美**字幕| 国产日韩欧美日韩大片| 日韩一区二区高清| 久久综合影音| 国产婷婷色综合av蜜臀av| 99精品视频免费观看| 久久久久综合网| 国产精品亚洲视频| 夜夜嗨av一区二区三区四季av | 午夜精品久久久久久久| 欧美精品一区在线观看| 国产一区二区精品在线观看| 一区二区三区久久网| 欧美/亚洲一区| 激情欧美一区二区三区在线观看| 亚洲一区二区三区精品在线| 欧美激情亚洲国产| 伊人夜夜躁av伊人久久| 香蕉久久久久久久av网站| 欧美日韩精品一区二区三区四区| 亚洲成人在线免费| 欧美一区二区视频在线观看2020 | 欧美激情一区| 黄色成人在线| 欧美在线www| 国产精品免费在线| 一本综合久久| 欧美日本亚洲韩国国产| 亚洲激情在线| 蜜臀av性久久久久蜜臀aⅴ| 国外成人在线视频网站| 久久成人人人人精品欧| 国产区欧美区日韩区| 午夜精品短视频| 国产精品毛片a∨一区二区三区| 亚洲日本成人在线观看| 男女av一区三区二区色多| 狠狠色狠狠色综合日日五| 久久九九有精品国产23| 国产一区日韩欧美| 久久国产精品毛片| 国产一区二区三区视频在线观看| 西瓜成人精品人成网站| 国产麻豆视频精品| 午夜精品久久久| 国产毛片一区二区| 欧美在线你懂的| 国户精品久久久久久久久久久不卡| 欧美一区二区视频免费观看 | 亚洲精品小视频在线观看| 欧美国产1区2区| 亚洲美女精品成人在线视频| 欧美精品在线观看播放| 日韩一区二区精品在线观看| 欧美日韩一区二区三区四区在线观看| av成人老司机| 国产精品久久久久久久午夜片 | 日韩亚洲欧美一区| 欧美三级第一页| 亚洲综合日韩在线| 国产日韩在线亚洲字幕中文| 亚洲欧美一区二区三区久久 | 亚洲精品久久久久久久久久久久久| 欧美成人精品一区| 99精品国产福利在线观看免费 | 永久免费视频成人| 麻豆乱码国产一区二区三区| 国外成人网址| 免费观看在线综合色| 亚洲欧洲在线视频| 欧美日韩免费看| 亚洲一区二区三区高清不卡| 国产免费观看久久黄| 久久精品欧美| 亚洲国产老妈| 欧美午夜视频一区二区| 欧美一级黄色录像| 精品91在线| 欧美黑人在线播放| 中日韩视频在线观看| 国产伦精品一区二区三区在线观看 | 欧美黄色aaaa| 亚洲素人在线| 国产亚洲精品bv在线观看| 米奇777在线欧美播放| 一区二区不卡在线视频 午夜欧美不卡'| 国产精品入口日韩视频大尺度| 亚久久调教视频| 在线免费精品视频| 欧美日韩在线高清| 欧美一区二区三区喷汁尤物| 在线欧美日韩精品| 欧美午夜视频在线| 久久久久久9999| 99伊人成综合| 国产在线精品一区二区中文 | 亚洲手机成人高清视频| 国产午夜精品全部视频播放 | 欧美日韩精品一区| 性欧美激情精品| 91久久在线观看| 国产麻豆午夜三级精品| 欧美大胆成人| 香蕉久久夜色| 亚洲精品综合久久中文字幕| 国产欧美精品一区| 欧美激情视频一区二区三区在线播放 | 国产欧美一区二区白浆黑人| 久久综合精品国产一区二区三区| 中文av字幕一区| 激情文学一区| 国产精品久久久久永久免费观看| 久久人人97超碰精品888| 夜夜嗨av一区二区三区中文字幕 | 国产一区在线观看视频| 欧美日韩二区三区| 久久在线免费观看视频| 亚洲午夜伦理| 亚洲高清自拍| 国产区日韩欧美| 欧美日韩国产精品自在自线| 久久久久看片| 亚洲欧美日韩爽爽影院| 亚洲人人精品| 狠狠色丁香久久婷婷综合丁香 | 国产午夜精品一区二区三区视频| 欧美日韩另类视频| 另类专区欧美制服同性| 欧美亚洲日本一区| 一本久久知道综合久久| 在线精品福利| 国产一区二区久久久| 国产精品xvideos88| 欧美激情aaaa| 老司机精品视频一区二区三区| 亚洲一区国产精品| 日韩午夜剧场| 亚洲精品国偷自产在线99热| 韩国成人福利片在线播放| 国产精品久久久久免费a∨| 欧美成人影音| 噜噜爱69成人精品| 久久精品免费电影| 亚洲欧美乱综合| 亚洲少妇自拍| 一本色道久久99精品综合| 亚洲国内精品在线| ●精品国产综合乱码久久久久| 国产嫩草一区二区三区在线观看| 欧美三级乱人伦电影| 欧美日韩99| 欧美高清免费| 欧美激情1区2区| 欧美激情第1页| 欧美成人性生活| 欧美韩国日本综合| 免费精品视频| 免费成人av资源网| 免费日韩成人| 久久尤物视频| 美日韩在线观看| 卡一卡二国产精品| 久久三级福利| 久久久噜噜噜久久| 久久国产精品毛片| 午夜精品在线看| 亚洲欧美日韩成人高清在线一区| 亚洲一区二区少妇| 亚洲第一狼人社区| 最新日韩精品| 狠狠色噜噜狠狠狠狠色吗综合| 国产欧美日韩在线视频|