Promise簡單概念介紹

Promise概念介紹

// 1. Promise 是一個 構造函數,既然是構造函數, 那麼,我們就可以  new Promise() 得到一個 Promise 的實例;
// 2. 在 Promise 上,有兩個函數,分別叫做 resolve(成功之後的回調函數) 和 reject(失敗之後的回調函數)
// 3. 在 Promise 構造函數的 Prototype 屬性上,有一個 .then() 方法,也就說,只要是 Promise 構造函數創建的實例,都可以訪問到 .then() 方法
// 4. Promise 表示一個 異步操作;每當我們 new 一個 Promise 的實例,這個實例,就表示一個具體的異步操作;
// 5. 既然 Promise 創建的實例,是一個異步操作,那麼,這個 異步操作的結果,只能有兩種狀態:
//  5.1 狀態1: 異步執行成功了,需要在內部調用 成功的回調函數 resolve 把結果返回給調用者;
//  5.2 狀態2: 異步執行失敗了,需要在內部調用 失敗的回調函數 reject 把結果返回給調用者;
//  5.3 由於 Promise 的實例,是一個異步操作,所以,內部拿到 操作的結果後,無法使用 return 把操作的結果返回給調用者; 這時候,只能使用回調函數的形式,來把 成功 或 失敗的結果,返回給調用者;
// 6. 我們可以在 new 出來的 Promise 實例上,調用 .then() 方法,【預先】 爲 這個 Promise 異步操作,指定 成功(resolve) 和 失敗(reject) 回調函數;


// 注意:這裏 new 出來的 promise, 只是代表 【形式上】的一個異步操作;
// 什麼是形式上的異步操作:就是說,我們只知道它是一個異步操作,但是做什麼具體的異步事情,目前還不清楚
// var promise = new Promise()


// 這是一個具體的異步操作,其中,使用 function 指定一個具體的異步操作
/* var promise = new Promise(function(){
  // 這個 function 內部寫的就是具體的異步操作!!!
}) */

const fs = require('fs')

// 每當 new 一個 Promise 實例的時候,就會立即 執行這個 異步操作中的代碼
// 也就是說,new 的時候,除了能夠得到 一個 promise 實例之外,還會立即調用 我們爲 Promise 構造函數傳遞的那個 function,執行這個 function 中的 異步操作代碼;
/* var promise = new Promise(function () {
  fs.readFile('./files/2.txt', 'utf-8', (err, dataStr) => {
    if (err) throw err
    console.log(dataStr)
  })
}) */


// 初衷: 給路徑,返回讀取到的內容
function getFileByPath(fpath) {
  return new Promise(function (resolve, reject) {
    fs.readFile(fpath, 'utf-8', (err, dataStr) => {

      if (err) return reject(err)
      resolve(dataStr)

    })
  })
}

/* getFileByPath('./files/2.txt')
  .then(function (data) {
    console.log(data + '-------')
  }, function (err) {
    console.log(err.message)
  }) */
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章