ES6语法学习——Promise

概述

promise是异步编程的一种解决方案,常见的应用场景就是进行网络封装。
它的出现是为了更好地解决JavaScript中异步编程的问题,传统的异步编程最大的特点就是地狱般的回调嵌套,一旦嵌套次数过多,就很容易使我们的代码难以理解和维护。而Promise则可以让我们通过链式调用的方法去解决回调嵌套的问题,使我们的代码更容易理解和维护,而且Promise还增加了许多有用的特性,让我们处理异步编程得心应手。

网络请求的回调地狱

  • 假设我们需要通过一个url1从服务器加载一个数据data1,data1中包含了下一个请求的url2
  • 我们需要通过data1取出url2,从服务器加载数据data2,data2中包含了下一个请求的url3
  • 我们需要通过data2取出url3,从服务器加载数据data2,data3中包含了下一个请求的url4
  • 发送网络请求url4,获取最终的数据data4
    在我们正常的情况下,上述代码不会发生问题,但是
    存在一个问题,这样的写出来的代码不仅难看而且不易于维护,我们希望用另外一种更加优雅的方式来进行这种异步操作。就是采用我们的Promise

基本使用过程

  • 基本使用过程,如代码所示:
/*
  *使用异步操作的的情况会使用到Promise
  *执行过程:new--->执行构造函数(执行一些相关操作:1.保存一些状态信息2.执行闯传入的函数)
  * 在执行回调函数时,会传入两个参数,resolve,reject,这两个参数本身也是函数
   */
  new Promise((resolve,reject) => {
   
    /*
    *再次可以进行你所想要进行的操作
    * 成功时用resolve调用
    * 失败是调用我们的reject
     */
    //resolve('hello world')
    //reject('error')
  }).then((data )=>{
   
   /*
   *调用resolve时,再此进行代码处理
   *
    */
    onsole.log('hello,nice');

  }).catch((error)=> {
   //调用reject时,再次进行相关处理
    console.log(error);
  })

举个例子:假设我们需要每个一段时间就打印出相应的代码:
我们采用一个定时器来模仿异步事件:
我们一般写定时器如下所示:中间间隔一秒打印我们的hello world.

  //1.使用定时器
  setTimeout(() =>{
   
   console.log('hello world');
     console.log('hello world');
        console.log
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值