学习笔记-Promise的使用

本文深入探讨Promise作为异步编程解决方案的使用,包括基本用法、链式调用、错误处理和Promise.all的应用。通过setTimeout模拟请求,展示了Promise如何在不同场景下管理和组织异步代码,强调了其在分离逻辑和处理网络请求中的作用。
摘要由CSDN通过智能技术生成

Promise是一种异步编程的解决方案。

settimeout模拟请求

//要传入两个参数 resolve 解决的意思 reject 拒绝的意思
//在函数里面需要传入这两个参数。而 resolve  reject 本身也是两个函数。
new Promise((resolve,reject)=>{
    setTimeOut((data)=>{
        //成功的时候在这里做代码处理 也就是在then里做处理
     //  resolve(data) //使用resolve的时候以函数的方式 然后在当前整个Promise中添加then函数 (下一步)
//失败的时候调用  reject(‘错误信息’)
},1000)


}).then((data)=>{

//处理请求

}).catch((err)=>{//catch 捕获

console.log(err);//专门在这里处理err的信息

})

//Promise 就是在你需要处理一些网络请求的时候,将代码有一个分离。也就是本应该在上面调用resolve函数的位置处理逻辑的,现在把它抽离到then函数中处理。

Promise的另一种写法:

new Promise((resolve,reject)=>{
    setTimeOut(()=>{

    resolve('这是正常的处理进来了')
    reject('这是报错了啥的进来了')
})

}).then(res=>{
    console.log(res);//调用resolve的时候会处理这里
},err=>{

    console.log(err);//调用reject的时候会处理这里
})

Promise的链式调用 第一种简写方式

new Promise((resolve,reject)=>{
    setTimeOut(()=>{
        resolve('aaa');
},1000)
}).then((res)=>{
    console.log(res + '第一次处理');
    return Promise.resolve(res+'111');
}).then((res)=>{
    console.log(res + '第二次处理');
    return Promise.resolve(res+'222');
}).then((res)=>{

     console.log(res + '第san次处理');
})

以上代码可以继续简写  内部会对return后面的进行promise封装

new Promise((resolve,reject)=>{
    setTimeOut(()=>{
        resolve('aaa');
},1000)
}).then((res)=>{
    console.log(res + '第一次处理');
    return res+'111';
}).then((res)=>{
    console.log(res + '第二次处理');
    return res+'222';
}).then((res)=>{

     console.log(res + '第san次处理');
})

以上都是调用的resolve,也就是都成功的时候。如果在过程中遇到有reject调用不成功的情况应该这样写:

new Promise((resolve,reject)=>{
    setTimeOut(()=>{
        resolve('aaa');
},1000)
}).then((res)=>{
    console.log(res + '第一次处理');
    return Promise.reject('err');//两种方式 :throw '错误信息'  抛出异常也是可以的
}).then((res)=>{
    console.log(res + '第二次处理');
    return Promise.resolve(res+'222');
}).then((res)=>{

     console.log(res + '第san次处理');
}).catch(err=>{
    console.log(err);
})

Promise的All使用

Promise.all([
    new Promise((resolve,reject)=>{
        setTimeOut(()=>{
           resolve('这是值')
        },1000)
    }),
    new Promise((resolve,reject)=>{
        setTimeOut(()=>{
            resolve({re:'11',age:18})
        },1000)
    })


]).then(res=>{
    console.log(res);//这里获取到上面两个resolve请求拿到的值
})

今天的学习就到这里了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值