本篇内容主要讲解“promise是不是es6的”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“promise是不是es6的”吧!是的。promise是ECMAScript 6新增的引用类型,表示一个异步操作的最终完成或者失败。promise是解决异步编程调用代码逻辑编写过于复杂的问题的,当网络请求非常复杂时,就会出现回调地狱,这样如果将这些代码写在一起就会看起来很复杂,且不利于阅读,如果用promise的话就会让代码看起来更加美观优雅。ECMAScript 6 增加了对 Promises/A+ 规范的完善支持,即 Promise 类型。一经推出,Promise 就大受欢迎,成为了主导性的异步编程机制。所有现代浏览器都支持 ES6 期约,很多其他浏览器 API 也以期约为基础。Promise 是 ECMAScript 6 新增的引用类型,表示一个异步操作的最终完成或者失败。promise函数是解决异步编程调用代码逻辑编写过于复杂的问题的,当网络请求非常复杂时,就会出现回调地狱,这样如果将这些代码写在一起就会看起来很复杂,且不利于阅读,如果用promise的话就会让代码看起来更加美观优雅首先, 当我们开发中有异步操作时, 就可以给异步操作包装一个Promise
异步操作之后会有三种状态
pending:等待状态,比如正在进行网络请求,或者定时器没有到时间。 fulfill:满足状态,当我们主动回调了resolve时,就处于该状态,并且会回调.then() reject:拒绝状态,当我们主动回调了reject时,就处于该状态,并且会回调.catch()
1.出于未决状态的函数是同步的 会立即执行
2.then和catch是异步的 就算promise对象里面没有异步操作 让then方法或者catch立即执行 那么 这里两个方法或被加入到事件队列中等待执行
//参数函数(resolve,reject) newPromise((resolve,reject)=>{ setTimeout(()=>{ //请求成功的时候调用resolve resolve('22222') //请求失败的时候调用reject reject('errormessage') },1000) }).then((data)=>{//请求成功处理函数 console.log(data) }).catch((err)=>{//请求失败处理函数 console.log(err) })
1、在未决状态的处理函数中 如果发生未捕获的错误呀 那么状态就会有pending 直接变成 rejected状态 并且可以被catach捕获
varpro=newPromise((resolve,reject)=>{ thrownewError("123"); //try{ //thrownewError("123"); //}catch(e){} resolve(12); reject(34); }) //pro.then(data=>{ //console.log(data); //},err=>{ //console.log(err); //}) console.log(pro); pro.then(data=>{ console.log(data); }) pro.catch(data=>{ console.log(data); })
1.使用Promise:
constmakeRequest=()=> getJSON().then(data=>{ console.log(data) return"done" }) makeRequest()
2.使用Async:async和await 是ES7提出来的
async作用:简化函数返回值中promise对象的创建
一般情况下, async写在函数的最前面,被修饰的函数的返回值 ,一定是promise对象。只有在某些特殊情况下 才会手动返回一个promise对象。作用:和promise一样 解决异步问题 但是他的好处在于 让异步代码和同步的一样!!
注意点 : 同步方法我们拿到结果 是通过返回值,异步方法拿到结果,是靠回调函数。async 和await使用的基本语法 :就是在普通函数前面加一个async 调用跟普通函数一样async出现使用 一般都要和await配合使用await后面接的就是一个promise对象 await一定是在异步函数中使用的
constmakeRequest=async()=>{ //awaitgetJSON()表示console.log会等到getJSON的promise成功reosolve之后再执行。 console.log(awaitgetJSON) return"done" } makeRequest()
3.区别1.函数前面多了一个aync关键字。await关键字只能用在aync定义的函数内。async函数会隐式地返回一个p免费云主机、域名romise,该promise的reosolve值就是函数return的值。(示例中reosolve值就是字符串”done”)
2.我们不能在最外层代码中使用await,因为不在async函数内。
varr1=newPromise((resolve,reject)=>{ setTimeout(function(){ resolve("我是第一个请求"); },1000) }) varr2=newPromise((resolve,reject)=>{ setTimeout(function(){ resolve("我是第二个请求"); },3000) }) varr3=newPromise((resolve,reject)=>{ setTimeout(function(){ resolve("我是第三个请求"); },4000) }) varr4=newPromise((resolve,reject)=>{ setTimeout(function(){ resolve("我是第四个请求"); },500) })
有时候我们需要等待两个或者多个请求都成功返回了再进行下一步操作,promise 的all方法是等所有的异步请求完成之后在进行下一步回调
Promise.all([r1,r2,r3,r4]).then(data=>{ console.log(data); })
请求同时发送出去 谁先回来 就是用谁的数据。
Promise.race([r1,r2,r3,r4]).then(data=>{ console.log(data); })
五.promise封装ajax案例
五.promise封装ajax案例到此,相信大家对“promise是不是es6的”有了更深的了解,不妨来实际操作一番吧!这里是云技术网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
这篇文章主要介绍“js如何去除html”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“js如何去除html”文章能帮助大家解决问题。 一、使用正则表达式去除HTML标记JavaScript中使用正则表达式是一种常见的方法…