@JRuiCoder
2016-10-04T13:16:28.000000Z
字数 1145
阅读 1112
ES6
Promise对象,代表未来某个将要发生的时间,可以将异步操作以同步操作的流程表达,避免回调函数。
Promise对象的基本用法
var promise =new Promise(function(resolve,reject){if(true){resolve(value);}else{reject(error);}});promise.then(function(value){//success},function(value){//failure})
使用promise完成Ajax请求
function getJson(url){var promise=new Promise(function(resolve,reject){var obj=new XMLHttpRequest();obj.open('GET',url);obj.readystatechange=handler;obj.responseType='json';obj.setRequestHeader('Accept','application/json');obj.send();function handler(){if(this.readyState===this.DONE){if(this.status===200){resolve(this.response);}else{reject(this);}}};});return promise;}
链式操作,从回调函数的横向发展,改为向下发展
catch方法是then(null,rejection)的别名,可以用来捕捉错误
getJson(url).then(function(){}).catch(function(error){})
用于多个异步操作,包装成一个新的Promise对象,操作完成后,新的Promise对象的状态变为fulfilled,其中一个失败,变为rejected
需要将现有对象转换为Promise对象,使用Promise.resolve
var promise=new Promise($.ajax(url));
如果resolve方法的参数不是具有then方法的对象,则返回一个新的Promise对象,且它的状态为resolved。
属于ES7
async function getSomething(){await get getOne();return 0;}
在函数名前面加上async,一旦遇到await就会先返回,等到出发的异步操作完成,再接着执行函数体内后面的语句。
未完成 pending
已完成 fulfilled
失败 rejected
