promise 從入門到精通1(準備篇)

從這一篇,我將一步步帶大家寫出一個promise,大家不用着急,我這博客是邊寫,邊做的筆記,所以有可能囉嗦,

也會出現很多錯誤,不過我們不着急,一點點解決,總會全部搞定的!

在學習promise 之前呢,我希望你有es6基礎知識,什麼解構語法,let const 都要會用,這起碼的吧!

————————————————————————————————————————————————————————

開始,準備

在js 中,函數是第一原型

 

const fn = new Fn();  fn 就是實例對象, new 一個,肯定就是實例對象了!

Fn.prototype Fn 就是函數對象了,因爲它不是實例對象,就是函數對象,我也成爲類對象!

上面稍微理解下就行了,以後還會慢慢看到,

 

上面就是同步的回調,它會先遍歷完數組,再打印最後一條語句

 

好,異步回調:

 

看到沒, 異步的回調會放到回調隊列中,所以執行慢一點,後執行!

——————————————————————————————————————————————

一般我們去學js 的時候,會出現報錯信息,我們都能很開心的處理好,所以沒有注意到底是啥錯誤類型,上面列表出來了

 

 

 

學過java 都知道類有子類,父類的概念,比如,哺乳動物,有人,牛,馬等,算了,我給大家畫一個圖:

人,牛,馬都是哺乳動物,所以哺乳動物就是父類, 而人牛馬就是哺乳動物的子類

說白了,人牛馬是哺乳動物的一種

而我們的錯誤

 

 

23456 類型的錯誤都是1錯誤的一種!

——————————————————————————————

 

行,錯誤的知識都在上面了,下面我們就好好體會下錯誤!

1, 引用變量不存在,我們寫寫!

這個和Java空指針差不多,我感覺,就是指針找不到對象!

 1. 錯誤的類型
        Error: 所有錯誤的父類型
        ReferenceError: 引用的變量不存在
        TypeError: 數據類型不正確的錯誤
        RangeError: 數據值不在其所允許的範圍內
        SyntaxError: 語法錯誤
    2. 錯誤處理
        捕獲錯誤: try ... catch
        拋出錯誤: throw error
    3. 錯誤對象
        message屬性: 錯誤相關信息
        stack屬性: 函數調用棧記錄信息
  */

  // 1. 常見的內置錯誤
  // 1). ReferenceError: 引用的變量不存在
  // console.log(a) // ReferenceError: a is not defined
  // console.log('-----') // 沒有捕獲error, 下面的代碼不會執行

  // TypeError: 數據類型不正確的錯誤
  // let b
  // // console.log(b.xxx) // TypeError: Cannot read property 'xxx' of undefined
  // b = {}
  // b.xxx() // TypeError: b.xxx is not a function


  // RangeError: 數據值不在其所允許的範圍內
  // function fn() {
  //   fn()
  // }
  // fn() // RangeError: Maximum call stack size exceeded

  // SyntaxError: 語法錯誤
  // const c = """" // SyntaxError: Unexpected string


  // 2. 錯誤處理
  // 捕獲錯誤: try ... catch
  // try {
  //   let d
  //   console.log(d.xxx)
  // } catch (error) {
  //   console.log(error.message)
  //   console.log(error.stack)
  // }
  // console.log('出錯之後')

  // 拋出錯誤: throw error
  function something() {
    if (Date.now()%2===1) {
      console.log('當前時間爲奇數, 可以執行任務')
    } else { // 如果時間是偶數拋出異常, 由調用來處理
      throw new Error('當前時間爲偶數無法執行任務')  
    }
  }

  // 捕獲處理異常
  try {
    something()
  } catch (error) {
    alert(error.message)
  }

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章