Arts 第八週(5/6 ~ 5/12)

ARTS是什麼?
Algorithm:每週至少作一個leetcode的算法題;
Review:閱讀並點評至少一篇英文技術文章;
Tip:學習至少一個技術技巧;
Share:分享一篇有觀點和思考的技術文章。javascript

Algorithm

LeetCode 312. Burst Balloons 思路分析總結java


Review

兩篇關於 JavaScript Promise 的文章:
算法

Understanding promises in JavaScript編程

Understanding async-await in Javascriptc#


第一篇文章講的是關於 Promise 的工做原理和使用方法:promise

  • Promise 裏面全部的函數的返回值也都是 Promise
  • Promise 有三個狀態
    • pending
    • resolve
    • reject
  • 對應到上面的 resolve 和 reject,promise 有三個響應機制(函數)
    • then(當 promise 的狀態是 resolve 的時候執行)
    • catch(當 promise 的狀態是 reject 的時候執行)
    • finally(無論 promise 狀態是什麼都執行)
  • Promise.all(iterable)
    • 這個函數會異步執行多個 Promise
    • 返回 resolve 的 promise 當輸入執行完全部輸入promise或輸入爲空
    • 返回 reject 的 promise 當遇到第一個 reject
  • Promise.race(iterable)
    • 返回第一個獲得的 resolve 或者 reject 的promise

第二篇文章講的是 Promise 的語法糖 async 和 await 的工做原理和使用方法:網絡

  • await 表示的表達式只能被定義在 async 表示的函數中
  • async 表示的函數的返回值是 promise 類型,即便你的返回值不是 promise,它也會自動將返回值包裹成 promise 的形式
  • await 的做用只是阻斷了程序的繼續執行,直到其修飾的 promise 被 resolve
  • 在循環中使用 await 時要很是當心,考慮是否可使用 Promise.all 來 parallel 運行,否則的話,效率會受到很大影響
  • 使用 await 注意使用 try catch 來進行異常的檢測和處理

Tip

最近學習了網絡當中的 ABNF 定義範式,在這裏羅列操做符的定義和一些核心規則異步

操做符async

  • 空格 : 用來分隔定義中的各個元素
  • / : 用來表示可選項
    • foo/bar ; 表示 foo 和 bar 兩者選一
  • %c##-## : 表示範圍
    • DIGIT = %x30-35 = "1" / "2" / "3" / "4" / "5"
  • () : 表示組合,括號裏面的東西視爲單個元素
  • ; : 註釋
  • * : 用來表示變量重複的個數
    • 2*5element ;表示 element 被容許的個數是 2-5 個
    • *element ;表示 element 被容許的個數是任意個,包括 0 個
    • 2*2element ;表示 element 被容許的個數是 2 個,等效於 2element
  • [] : 表示可選,等效於 *1()

核心規則: 規則名字是大小寫不敏感的函數

  • ALPHA = %41-5A / %x61-7A ; A-Z / a-z
  • BIT = "0" / "1"
  • CHAR = %x01-7F ; excluding NUL
  • CR = %x0D ; carriage return
  • CRLF = CR LF ; Internet standard newline
  • CTL = %x00-1F / %x7F ; controls
  • DIGIT = %x30-39 ; 0-9
  • DQUOTE = %x22 ; " double quote
  • HEXDIG = DIGIT / "A" / "B" / "C" / "D" / "E" / "F"
  • HTAB = %x09 ; horizontal tab
  • LF = %x0A ; linefeed
  • SP = %x20
  • WSP = SP / HTAB ; white space
  • LWSP = *(WSP / CRLF WSP) ; do not use when defining mail headers and use with caution in other contexts
  • OCTET = %x00-FF ; 8 bits of data
  • VCHAR = %x21-7E ; visible (printing) characters

Share

此次寫的是本身接觸編程不到 3 年來,所看到的一些東西,但願對大家有所幫助。

談談學習編程過程當中的意識誤區

相關文章
相關標籤/搜索