es6中的promise对象
Posted jines
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了es6中的promise对象相关的知识,希望对你有一定的参考价值。
Promise是异步里面的一种解决方案,解决了回调嵌套的问题,es6将其进行了语言标准,同意了用法,提供了`promise`对象, promise对象有三种状态:pending(进行中) 、Resolved(已经完成)和Rejected(已失败)
ES6规定,Promise对象是一个构造函数,用来生成Promise实例。
var promise=new Promise(function(resove,reject){ if (/* 异步操作成功 */){ resolve(value); } else { reject(error); } })
Promise实例生成以后,可以用then
方法分别指定Resolved
状态和Reject
状态的回调函数。
promise.then(function(value) { // success }, function(error) { // failure });
案例
var promise=new Promise(function(resolve,reject){ console.log(‘promise‘); }) promise.then(function(){ console.log(‘我后执行‘) }) console.log(‘我先执行‘)
//上面代码中,Promise新建后立即执行,所以首先输出的是“Promise”。然后,then
方法指定的回调函数,
//将在当前脚本所有同步任务执行完才会执行,所以“我后执行” 最后输出。
ajax
1 var getJSON=function(url){ 2 var promise=new Promise(function(resolve,reject){ 3 var xhr=new XMLHttpRequest(); 4 xhr.open(‘get‘,url); 5 xhr.onreadystatechange=handler; 6 xhr.send(null); 7 8 function handler(){ 9 if(this.readystate!==4){ 10 return; 11 } 12 if(this.status==200){ 13 resolve(this.responseText) 14 }else{ 15 reject(new Error(this.statusText)); 16 } 17 } 18 }) 19 return promise; 20 } 21 getJSON("/get.json").then(function(json) { 22 console.log(‘Contents: ‘ + json); 23 }, function(error) { 24 console.error(‘出错了‘, error); 25 });
以上是关于es6中的promise对象的主要内容,如果未能解决你的问题,请参考以下文章
VSCode自定义代码片段12——JavaScript的Promise对象