异步回调函数,promise实例,捕获/处理异常,处理回调地狱

异步回调函数

function fun1(callback){
     setTimeout(() => {
         var a=100;
         callback(a)
     }, 1000);
 }
fun1(function(a){
    console.log(a)
})

promise执行,通过.then指定成功和失败的回调

function prom(path){
    var promise = new Promise(function(resolve,reject){
        fs.readFile(path,'utf-8',(err,data)=>{
            if(err) return reject(err)
            resolve(data)
        })
    })
    // 将promise输出
    return promise
}
var promNwe = prom('./text.txt')
// 给promise实例预先指定2个方法 ,因为这是一个异步操作,.then先执行,之后再去文件
promNwe.then(function(res){
    console.log(res)
},function(err){
    console.log(err)
})

回调地狱

prom('./text.txt')
    .then(function (res) {
        console.log(res)
        prom('./text1.txt').then(function (res) {
            console.log(res)
            prom('./text2.txt').then(function (res) {
                console.log(res)
            })
        })
    })

使用promise解决回调地狱,捕获异常,

function prom(path){
    var promise = new Promise(function(resolve,reject){
        fs.readFile(path,'utf-8',(err,data)=>{
            if(err) return reject(err)
            resolve(data)
        })
    })
    // 将promise输出
    return promise
}
// 给promise实例预先指定2个方法 ,因为这是一个异步操作,.then先执行,之后再去文件

prom('./text.txt')
.then(function(res){
//这里如果执行失败了会终止后面的执行,我们可以定义一个失败的回调,继续执行 
    console.log(res)
    return prom('./text1.txt')
},function(err){
    console.log('执行失败的回调',err)
    return prom('./text1.txt')
})
.then(function(res){
    // 这个.then操作的就是上个.then返回的prom()
    console.log(res)
    return prom('./text2.txt')
})
.then(function(res){
    console.log(res)
}).catch(function(err){
	//处理失败的第二种方法,结尾定义一个catch方法,上面的流程如何一个步骤失败都会执行这一步
    console.log('处理失败的方式',err)
})

你可能感兴趣的:(JS)