目錄
何時使用finally
首頁 web前端 css教學 終於...終於有諾言的帖子

終於...終於有諾言的帖子

Apr 19, 2025 am 09:39 AM

Finally... A Post on Finally in Promises

JavaScript Promise 中的finally塊何時執行?最近在一個研討會上有人問了我這個問題,我想寫一篇小文章來消除一些困惑。

答案是,引用斯內普的話:

……總是。

基本結構如下:

 try {
  // 我將嘗試為你執行一些代碼} catch (error) {
  // 我將處理該過程中出現的任何錯誤} finally {
  // 無論如何我都會執行}
登入後複製

例如,這是一個Chuck Norris 笑話生成器示例,其內容來自Chuck Norris 數據庫API。 (順便說一句,我從Todd Motto 的非常棒的開放API 列表中找到了這個API,它非常適合演示和副項目。)

 async function getData() {
  try {
    let chuckJokes = await fetch(`https://api.chucknorris.io/jokes/random`)
      .then(res => res.json());

    console.log('我為你獲取了一些數據!');
    document.getElementById("quote").innerHTML = chuckJokes.value;
  } catch (error) {
    console.warn(`這裡有一個錯誤:${error}`);
  } finally {
    console.log('無論如何,finally 都會執行!');
  }
}
登入後複製

控制台輸出:(此處應顯示成功獲取笑話的控制台輸出)

現在,讓我們在API 的URL 中引入一個錯字,意外地添加一堆<var>r</var> 。這將導致我們的try語句失敗,這意味著catch現在會拋出一個錯誤。

 async function getData() {
  try {
    // 讓我們稍微搞砸一下let chuckJokes = await fetch(`https://api.chucknorrrrris.io/jokes/random`)
      .then(res => res.json());

    console.log('我為你獲取了一些數據!');
    document.getElementById("quote").innerHTML = chuckJokes.value;
  } catch (error) {
    console.warn(`這裡有一個錯誤:${error}`);
  } finally {
    console.log('無論如何,finally 都會執行!');
  }
}
登入後複製

控制台輸出:(此處應顯示錯誤信息和finally塊的輸出)

一個非常重要的方面是,示例中沒有說明的是,即使在trycatch塊中, returnbreak語句停止了代碼, finally也會運行

何時使用finally

我發現它在兩種不同的情況下特別有用,儘管我相信還有其他情況:

  • 當我在trycatch塊中需要重複代碼時。這是我在編寫的Vue 食譜中一個示例。我在finally塊中關閉了加載狀態。這包括,就像上面的示例一樣,我需要在任何情況下更改UI。
  • 當需要進行一些清理工作時。 Oracle 在其文檔中提到了這一點。它是Java,但前提相同。

finally的用途不如trycatch頻繁,但在某些情況下值得注意。希望這能澄清你的疑問!

以上是終於...終於有諾言的帖子的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

<🎜>:泡泡膠模擬器無窮大 - 如何獲取和使用皇家鑰匙
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系統,解釋
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆樹的耳語 - 如何解鎖抓鉤
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1671
14
CakePHP 教程
1428
52
Laravel 教程
1331
25
PHP教程
1276
29
C# 教程
1256
24
靜態表單提供商的比較 靜態表單提供商的比較 Apr 16, 2025 am 11:20 AM

讓我們嘗試在這裡造成一個術語:“靜態表單提供商”。你帶上html

使Sass更快的概念證明 使Sass更快的概念證明 Apr 16, 2025 am 10:38 AM

在一個新項目開始時,Sass彙編發生在眼睛的眨眼中。感覺很棒,尤其是當它與browsersync配對時,它重新加載

每周平台新聞:HTML加載屬性,主要的ARIA規格以及從iframe轉移到Shadow dom 每周平台新聞:HTML加載屬性,主要的ARIA規格以及從iframe轉移到Shadow dom Apr 17, 2025 am 10:55 AM

在本週的平台新聞綜述中,Chrome引入了一個用於加載的新屬性,Web開發人員的可訪問性規範以及BBC Move

帶有HTML對話框元素的一些動手 帶有HTML對話框元素的一些動手 Apr 16, 2025 am 11:33 AM

這是我第一次查看HTML元素。我已經意識到了一段時間,但是尚未將其旋轉。它很酷,

紙張形式 紙張形式 Apr 16, 2025 am 11:24 AM

購買或建造是技術的經典辯論。自己構建東西可能會感覺更便宜,因為您的信用卡賬單上沒有訂單項,但是

'訂閱播客”鏈接應在哪裡? '訂閱播客”鏈接應在哪裡? Apr 16, 2025 pm 12:04 PM

有一段時間,iTunes是播客中的大狗,因此,如果您將“訂閱播客”鏈接到喜歡:

託管您自己的非JavaScript分析的選項 託管您自己的非JavaScript分析的選項 Apr 15, 2025 am 11:09 AM

有很多分析平台可幫助您跟踪網站上的訪問者和使用數據。也許最著名的是Google Analytics(廣泛使用)

See all articles