第1. Promise是构造函数,可以new Promise(),构造一个Promise实例;
第2. Promise上有两个函数,resolve(成功之后回调函数)与reject(失败之后回调函数)函数;
第3. 在Promise构造函数的prototype上有个.then()方法,只要构造Promise函数后就有此方法;
第4. new Promise() 表示是一个异步操作;
4.1 状态1: 异步执行成功,调用resolve函数;
4.2 状态2: 异步执行失败,调用与reject函数;
4.3 操作结果,无法使用return返回给调用者,只能使用回调函数形式,返回给调用者;
第5. 上代码
###### 需求:给路径,读取文件
//具体的异步操作
//当new实例后,会立刻执行function里的函数方法
//promise 放到方法中按需执行
const fs = required('fs')
function getFileByPath (fpath){
var promise = new Promise(function(resolve,reject){
//toDosomething
fs.readFile(fpath,'utf-8',(err,dataStr) => {
if (err) return reject(err)//失败回调
resolve(dataStr)//成功回调
})
});
return promise //return 出去
}
//解决回调地狱问题,先读取文件1,再文件2,然后文件3,不用嵌套到函数里,
//可以return出去,返回新的Promise实例
getFileByPath('/files/1.txt')
.then(function(data){
console.log(data)
return getFileByPath('/files/2.txt')
})
.then(function(data){
console.log(data)
return getFileByPath('/files/3.txt')
})
.then(function(data){
console.log(data)
})
.catch(function(err){//捕获错误,输出错误信息
console.log(err.message)
})
`
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。