1

第1. Promise是构造函数,可以new Promise(),构造一个Promise实例;

第2. Promise上有两个函数,resolve(成功之后回调函数)与reject(失败之后回调函数)函数;

console控制台打印

第3. 在Promise构造函数的prototype上有个.then()方法,只要构造Promise函数后就有此方法;

1573546253839.jpg

第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)
})

`


diuren1205
57 声望5 粉丝

I love coding