基本使用javascript
// new 作了什麼 // 1. 建立一個新的空對象 // 2. 將構造函數中的this指向這個新空對象 // 3. 執行構造函數中的代碼 // 4. 返回這個對象 // 5. 這個對象上有一個__proto__指向構造函數的原型 var promise = new Promise((resolve, reject) => { var flag = false if (flag) return resolve() reject() }) promise.then((res) => { var a = '成功回調' console.log(a, 11111) }, (err) => { var b = '失敗回調' console.log(b, 22222) })
函數封裝java
// new 作了什麼 // 1. 建立一個新的空對象 // 2. 將構造函數中的this指向這個新空對象 // 3. 執行構造函數中的代碼 // 4. 返回這個對象 // 5. 這個對象上有一個__proto__指向構造函數的原型 // 定義一個函數包起來 function promiseTest () { var promise = new Promise((resolve, reject) => { var flag = false if (flag) return resolve() reject() }) return promise } /* var a = promiseTest() console.log(a) a.then((res) => { var a = '成功回調' console.log(a, 11111) }, (err) => { var b = '失敗回調' console.log(b, 22222) }) */ promiseTest().then((res) => { var a = '成功回調' console.log(a, 11111) }, (err) => { var b = '失敗回調' console.log(b, 22222) })
promise讀取文件promise
const fs = require('fs') const path = require('path') // 讀取文件成功以後 幫我調用success函數 若是讀取失敗幫我調用fail函數 /*function success () { console.log(`成功了`) } function fail () { console.log(`失敗`) } fs.readFile(path.join(__dirname, './files/1.txt'), 'utf8', (err, data) => { if (err) return fail() success() }) */ // 用promise寫 function ReadFilePromise () { return new Promise(function(resolve, reject) { fs.readFile(path.join(__dirname, './files/1.txt'), 'utf8', (err, data) => { if (err) return reject() resolve() }) }) } ReadFilePromise().then((res) => { console.log('成功了') }, (err) => { console.log('失敗了') })
const fs = require('fs') const path = require('path') // 用promise寫 function ReadFilePromise (name) { return new Promise(function(resolve, reject) { fs.readFile(path.join(__dirname, `./files/${name}`), 'utf8', (err, data) => { if (err) return reject(err) resolve(data) }) }) } ReadFilePromise('1.txt') .then((res) => { console.log(res) return ReadFilePromise('2.txt') }) .then((res) => { console.log(res) return ReadFilePromise('3.txt') }) .then((res) => { console.log(res) }) .catch(err => { console.log(err) })