理論
- Promise是es6的新特性
- Promise是一個構造函數
- new Promise的返回值是一個Promise實例對象
- Promise可以看作是一個容器,裏面存放的是異步任務,該任務的初始狀態爲Pending,且只能變爲以下兩種狀態的任意一種,即resolved和rejected
- 容器一旦創建就會立即執行callback中的代碼
- .then方法中的第一個回調函數作爲前一個返回的promise實例對象的resolve函數,.then方法中的第二個回調函數作爲實例對象的reject函數
code
const fs = require('fs')
function myRead(filePath) {
return new Promise((resolve, reject) => {
fs.readFile(filePath, 'utf8', (err, data) => {
if (err) {
reject(err)
} else {
resolve(data)
}
})
})
}
myRead('./a.txt')
.then((data) => {
console.log('data-a', data)
return myRead('./b.txt')
}, (err) => {
console.log('err-a', err)
})
.then((data) => {
console.log('data-b', data)
}, (err) => {
console.log('err-b', err)
})