java1234开源博客系统
博客信息

es6 Promise 对象

0
发布时间:『 2019-07-23 14:30』  博客类别:Vue.js  阅读(135)

es6 Promise 对象


es6 Promise 对象是异步编程的一种解决方案。(再javascript世界里,是单线程顺序执行的)

从语法上说,Promise 是一个对象,从它可以获取异步操作的消息。


Promise 异步操作有三种状态:pending(进行中)、fulfilled(已成功)和 rejected(已失败)。除了异步操作的结果,任何其他操作都无法改变这个状态。

Promise 对象只有:从 pending 变为 fulfilled 和从 pending 变为 rejected 的状态改变。只要处于 fulfilled 和 rejected ,状态就不会再变了即 resolved(已定型)。


我们先搞个异步实例来体验下;

 // 执行成功调用resolve  执行失败调用reject

let promise=new Promise((resolve,reject)=>{

console.log('promise初始化状态:pending')   // 同步执行

setTimeout(()=>{

console.log('开启定时器,模拟异步操作')

//resolve('异步返回,执行成功') // promise状态为 fulfilled

reject('异步返回,执行失败') // promise状态为 rejected

},1000)

})

console.log('代码继续执行')


promise

.then((data)=>{  // 第一个回调 成功resolve

console.log(data)

},(data)=>{   // 第二个回调 失败reject

console.log(data)

}

)


执行效果:

QQ鎴浘20190723122120.jpg


我们再看一个ajax请求用上Promise,代码看起来更规整

以前写ajax请求 用原生的,很凌乱,就算用jquery ajax 回调方法那块也是多层嵌套,写业务逻辑也是很凌乱;

Promise 可以解决这种凌乱问题,让异步请求更加规整;维护方便;


先搞个模拟json:

{
  "ret": true,
  "data": {
    "studentList": [{
      "id": "0001",
      "name": "Jack"
    },{
      "id": "0002",
      "name": "Marry"
    },{
      "id": "0003",
      "name": "Sunndy"
    },{
      "id": "0004",
      "name": "Lini"
    }]
  }
}


代码:

// 执行成功调用resolve  执行失败调用reject
let promise=new Promise((resolve,reject)=>{
	console.log('promise初始化状态:pending')   // 同步执行
	$.get('./data.json',{},function(result){
		console.log('ajax异步操作');
		if(result.ret){
			console.log('执行成功')
			resolve(result.data);
		}else{
			console.log('执行失败')
			reject(result.data);
		}
	},'json');
})
console.log('代码继续执行')

promise
	.then((data)=>{  // 第一个回调 成功resolve
		console.log(data)
	},(data)=>{   // 第二个回调 失败reject
		console.log(data)
	}
)


QQ鎴浘20190723142627.jpg




关键字:   es6     Promise     对象  
Powered by Java1234 V3.0 Copyright © 2012-2016 Java知识分享网 版权所有