es6学习笔记

  

★★代码都是从上到下依次执行,写在前面的先执行,别跳看! !一步一步的来! !
<强>一、承诺对象的使用
承诺处理的是一个异步问题
通常情况:回调函数是异步编程解决方案的一种
只要是回调函数,都可以改写成承诺写法!

  
 <代码>函数发送(回调url) {//var xhr=?/?
  回调();//回调函数这么使用
  }
  
  发送(“url1”,()=祝辞{//参数是一个回调函数//做某事
  }) 
  

承诺是一个构造函数,使用的时候需要新一下,承诺需要接收一个参数,这个参数是一个函数,并且该函数需要传入2个参数的决心,拒绝,分别表示异步操作执行成功后的回调函数和异步操作执行失败后的回调函数。

  

1.1,我们用承诺的时候一般是包在一个函数中,在需要的时候去运行这个函数,因为新承诺的时候,传入其中的函数会自动执行,所以我们需要控制其中的函数在需要的时候才去执行

  

1.2,对于承诺的那么()方法,然后总是会返回一个承诺实例,因此你可以一直调用,然后接收一个函数,函数接收2个参数的决心,拒绝

  
 <代码> var p=新的承诺(()=祝辞{
  console.log(“执行了”);//定义承诺对象的时候,一定要传入一个函数,否则报错,而且这个函数在创建承诺对象的时候聚立即执行了。此时承诺对象的状态是悬而未决
  })//传入参数解决,拒绝,执行解决();就把承诺变成成功的状态了,执行拒绝();就把承诺变成失败的状态了
  var p=新的承诺((解决,拒绝)=祝辞{//这里面可以执行别的自定义方法,不一定只能是解决或者拒绝,在自定义方法里面,设置什么时候执行决心,什么时候执行拒绝、下面使用捉捕捉拒绝
  console.log (1);//执行到这里,下面马上把承诺变为成功状态
  解决();//把承诺变成成功的状态
  })
  var p=新的承诺((解决,拒绝)=祝辞{//内部有三种状态,等待,决心,拒绝
  返回解决(“成功”);//进入成功执行的代码一般会加个回报,阻止后续代码的执行
  拒绝();//进入执行失败的代码解决与拒绝二者只会执行前一个,后者不会执行,但是后续的代码还会继续执行;解决(数据)有参数,然后用数据接收,拒绝(err)也有参数,发现用错接收
  console.log ();//会继续执行到这里
  })
  p。然后((数据)=祝辞{//这里的数据接收上面解决传入的“成功”字符串
  console.log(“:”+数据);
  }) 
  

1.3,然后方法是一个实例方法,建立在返回<强> p实例强的基础上

  
 <代码>然后(()=祝辞{//然后接收一个函数,函数接收2个参数,前者是上面进入成功状态执行,后者是上面进入失败状态执行
  console.log(“成功”)//上面的解决()时进入这里
  }()=祝辞{//上面的拒绝()时进入这里
  console.log(“失败”)
  }) 
  

提示,但是一般不使用上面的写法

  
 <代码> p。然后((数据)=祝辞{//然后默认返回成功状态
  console.log(数据);//成功
  })//成功状态时进入
  p。抓住(()=祝辞{
  console.log(“失败”);
  })//失败状态时进入
  
  var p=新的承诺((解决,拒绝)=祝辞{
  解决(“成功”);
  })
  
  var p2 p=H缓?()=在{});//执行完返回的承诺是成功的状态,p2.then走成功解决()方法//这里没有返回值,就相当于返回未定义,返回定义
  
  var p2 p=H缓?()=祝辞{
  返回“非承诺对象“//执行完返回的承诺也是成功的状态
  }) 
  

后续链式调用然后方法,返回的是一个承诺对象,这个返回的承诺对象的状态是成功还是失败,取决于那方法内部的代码,如果内部代码返回的是非承诺对象,无论是有值还是未定义的,都是解决(),否则,如果内部返回的是承诺对象,那么如果该返回的承诺对象是拒绝,那么然后返回的是拒绝,否则就是解决

  

1.4,抓住方法
捕获相当于之后的第二个参数

  
 <代码> var p=新的承诺((res,球员)=祝辞{
  res(“成功”);
  })
  p。然后(()=祝辞{
  控制台。日志(1)
  })。然后(()=祝辞{
  控制台。日志(2)
  })。抓住((err)=祝辞{//捕捉失败
  console.log (err)
  })。最后(()=祝辞{//匿名函数里面没有参数了,不管执行了成功还是失败,这里都会执行到
  console.log(“执行完毕”);
  })
  console.log(“这儿的代码仍然能执行”);//执行了抓住方法,捕捉错误,不会影响后续代码的执行=====等价于======var p=新的承诺((res,球员)=祝辞{
  res(“成功”);
  })
  
  让res=p。然后(()=祝辞{//执行完,永远都返回承诺对象,成功还是失败取决于返回的类型,成功继续走然后,失败走
  控制台。日志(1)
  })。然后(()=祝辞{
  控制台。日志(2)
  })
  
  res.catch ((err)=祝辞{//捕捉失败
  console.log (err)
  })。最后(()=祝辞{//匿名函数里面没有参数了,不管执行了成功还是失败,这里都会执行到
  console.log(“执行完毕”);
  })
  console.log(“这儿的代码仍然能执行”);//执行了抓住方法,捕捉错误,不会影响后续代码的执行
  

es6学习笔记