成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

try catch 在實(shí)際開(kāi)發(fā)場(chǎng)景中的五大用處,用起來(lái)?。。?/h1>

開(kāi)發(fā) 前端
昨天一位群友在面試的時(shí)候被問(wèn)到了這么一個(gè)問(wèn)題:多個(gè)請(qǐng)求同時(shí)發(fā)起時(shí),如何保證失敗或者成功都返回,我第一啥時(shí)間就想到了?Promise.allSettled?來(lái)實(shí)現(xiàn)。

前言

大家好,我是林三心,用最通俗易懂的話講最難的知識(shí)點(diǎn)是我的座右銘,基礎(chǔ)是進(jìn)階的前提是我的初心~

昨天一位群友在面試的時(shí)候被問(wèn)到了這么一個(gè)問(wèn)題:多個(gè)請(qǐng)求同時(shí)發(fā)起時(shí),如何保證失敗或者成功都返回,我第一啥時(shí)間就想到了 Promise.allSettled 來(lái)實(shí)現(xiàn)

// 模擬多個(gè)異步操作:獲取用戶基本信息、訂單記錄、消息通知
const fetchUserInfo = () =>
  fetch('/api/user').then(res => res.json());

const fetchOrders = () =>
  fetch('/api/orders').then(res => {
    if (!res.ok) thrownewError('訂單獲取失敗')
    return res.json()
  });

const fetchNotifications = () =>
newPromise((_, reject) =>
    setTimeout(() => reject(newError('請(qǐng)求超時(shí)')), 3000)
  );

// 使用 Promise.allSettled 并行執(zhí)行
Promise.allSettled([
  fetchUserInfo(),
  fetchOrders(),
  fetchNotifications()
])
.then(results => {
const [userResult, ordersResult, notifyResult] = results;

// 處理用戶信息
if (userResult.status === 'fulfilled') {
    console.log('用戶數(shù)據(jù):', userResult.value);
    renderUserProfile(userResult.value);
  } else {
    console.error('用戶信息失敗:', userResult.reason);
    showPlaceholder('#user-section');
  }

// 處理訂單數(shù)據(jù)
if (ordersResult.status === 'fulfilled') {
    console.log('訂單數(shù)據(jù):', ordersResult.value);
    renderOrderList(ordersResult.value);
  } else {
    console.error('訂單獲取失敗:', ordersResult.reason);
    showErrorToast('訂單加載異常');
  }

// 處理通知數(shù)據(jù)
if (notifyResult.status === 'fulfilled') {
    console.log('通知數(shù)據(jù):', notifyResult.value);
    updateNotificationBadge(notifyResult.value);
  } else {
    console.warn('通知獲取失敗:', notifyResult.reason);
    disableNotificationBell();
  }
});

/* 輸出示例:
用戶數(shù)據(jù): {id: 1, name: "張三"}
訂單數(shù)據(jù): [ {...}, {...} ]
通知獲取失敗: Error: 請(qǐng)求超時(shí)
*/

但是他說(shuō)了:面試官說(shuō)除了 Promise.allSettled 實(shí)現(xiàn),還有什么其他辦法嗎? 于是我又想到了使用 try catch + Promise.all:

// 模擬多個(gè)異步操作:獲取用戶基本信息、訂單記錄、消息通知
const fetchUserInfo = async () => {
    try {
        const res = await fetch('/api/user')
        return res.json()
    } catch {
        returnnull
    }
}

const fetchOrders = async () => {
    try {
        const res = await fetch('/api/orders')
        if (!res.ok) thrownewError('訂單獲取失敗')
        return res.json()
    } catch {
        returnnull
    }
}

const fetchNotifications = async () => {
    try {
        awaitnewPromise((_, reject) =>
            setTimeout(() => reject(newError('請(qǐng)求超時(shí)')), 3000)
        )
    } catch {
        returnnull
    }
}

// 使用 Promise.all
Promise.all([
    fetchUserInfo(),
    fetchOrders(),
    fetchNotifications()
]).then(res => {
    console.log(res)
    // [
    //     {id: 1, name: "張三"},
    //     [ {...}, {...} ],
    //     null
    // ]
})

接著這位群友問(wèn)我能不能出一篇 try catch 在實(shí)際開(kāi)發(fā)中的使用場(chǎng)景,我想想其實(shí)可以講講

try catch 場(chǎng)景

1、異步請(qǐng)求的優(yōu)雅處理

典型場(chǎng)景: 處理 AJAX/Fetch 請(qǐng)求時(shí)網(wǎng)絡(luò)錯(cuò)誤、接口異常

async function fetchUserData() {
try {
    const response = await fetch('/api/user');
    if (!response.ok) thrownewError('HTTP Error');
    const data = await response.json();
    // 正常處理邏輯
  } catch (error) {
    console.error('請(qǐng)求失敗:', error);
    showToast('數(shù)據(jù)加載失敗,請(qǐng)檢查網(wǎng)絡(luò)');
    // 降級(jí)處理:顯示緩存數(shù)據(jù)/缺省頁(yè)面
  }
}

2、JSON 解析的安全防護(hù)

常見(jiàn)問(wèn)題: JSON.parse() 遇到非法格式時(shí)導(dǎo)致整個(gè)應(yīng)用崩潰

function safeParse(jsonString) {
  try {
    return JSON.parse(jsonString);
  } catch (e) {
    console.warn('JSON 解析失敗,返回默認(rèn)值');
    return {}; // 或執(zhí)行其他恢復(fù)邏輯
  }
}

// 使用案例
const userPrefs = safeParse(localStorage.getItem('preferences'));

3、第三方庫(kù)的錯(cuò)誤隔離

痛點(diǎn)場(chǎng)景: 不確定穩(wěn)定性的插件/工具庫(kù)可能拋出意外錯(cuò)誤

function safePluginInit() {
  try {
    ThirdPartyPlugin.init({
      // 復(fù)雜配置項(xiàng)
    });
  } catch (e) {
    captureErrorToSentry(e); // 上報(bào)錯(cuò)誤
    loadFallbackPlugin(); // 降級(jí)方案
  }
}

4、表單驗(yàn)證的靈活應(yīng)用

function validateForm(formData) {
try {
    if (!formData.email.includes('@')) {
      thrownew ValidationError('郵箱格式錯(cuò)誤');
    }
    if (formData.password.length < 8) {
      thrownew ValidationError('密碼至少8位');
    }
  } catch (e) {
    if (e instanceof ValidationError) {
      highlightErrorField(e.message);
      returnfalse;
    }
    // 其他未知錯(cuò)誤繼續(xù)拋出
    throw e;
  }
}

5、瀏覽器特性檢測(cè)的優(yōu)雅降級(jí)

兼容性處理: 替代傳統(tǒng)的特性檢測(cè)寫(xiě)法

function checkWebGLSupport() {
try {
    const canvas = document.createElement('canvas');
    return !!window.WebGLRenderingContext && 
      (canvas.getContext('webgl') || canvas.getContext('experimental-webgl'));
  } catch (e) {
    returnfalse;
  }
}

if (!checkWebGLSupport()) {
  showCompatibilityWarning();
  load2DFallback();
}
責(zé)任編輯:武曉燕 來(lái)源: 前端之神
相關(guān)推薦

2009-12-01 08:54:30

Linux發(fā)行版

2022-03-24 08:57:30

Linux BashShell代碼

2019-02-21 05:51:44

物聯(lián)網(wǎng)用途IOT

2009-03-15 10:01:54

Firefox瀏覽器分頁(yè)

2020-10-14 10:58:48

JavaScript工具Gitee

2025-01-20 09:00:00

架構(gòu)開(kāi)發(fā)代碼

2017-06-14 19:05:51

機(jī)器學(xué)習(xí)Quora應(yīng)用場(chǎng)景

2010-03-16 14:50:49

Python web框

2019-06-04 10:40:07

2021-09-08 17:17:43

大數(shù)據(jù)智慧城市大數(shù)據(jù)應(yīng)用

2009-03-05 09:21:04

敏捷開(kāi)發(fā)XP開(kāi)源

2022-02-14 08:00:00

開(kāi)發(fā)CI/CD自動(dòng)化

2010-03-10 15:54:33

Python讀寫(xiě)文件

2023-11-27 15:27:21

2021-12-26 22:53:42

5G基站技術(shù)

2018-10-26 08:59:17

Linux開(kāi)發(fā)工具

2023-11-28 11:29:02

人工智能醫(yī)療保健

2021-09-26 05:38:16

云計(jì)算云計(jì)算環(huán)境云應(yīng)用

2021-06-30 09:20:18

NuShell工具Linux
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 午夜爱爱毛片xxxx视频免费看 | 日本黄色激情视频 | 午夜精品一区二区三区在线播放 | 九九热精品视频 | 日韩手机在线视频 | 欧美性受xxxx | 国产无套一区二区三区久久 | 日韩av免费看| 亚洲欧美在线观看 | 国产福利在线播放 | 91精品在线看 | 丝袜天堂| 91精品国产92| 欧美精品一区二区三区一线天视频 | 中文字幕一区在线 | 国产一区二区三区www | 亚洲欧美日韩在线不卡 | 国产午夜影院 | 在线观看成人免费视频 | 免费国产黄网站在线观看视频 | 天天操天天射天天 | 欧美一级在线观看 | 亚洲国产精品区 | 小草久久久久久久久爱六 | 欧美一区二区三区国产精品 | 国产精品美女久久久 | 亚洲精品欧美精品 | 中文字幕日韩欧美一区二区三区 | 极品电影院| 国家aaa的一级看片 h片在线看 | 91在线精品一区二区 | 色综合色综合 | 亚洲一区二区中文字幕在线观看 | 日本特黄特色aaa大片免费 | 欧美 日韩 国产 一区 | 日韩在线视频一区 | 日本不卡免费新一二三区 | 日韩国产精品一区二区三区 | 一级a性色生活片久久毛片 午夜精品在线观看 | 中文字幕久久精品 | 亚洲激精日韩激精欧美精品 |