0%

js延时对象Promise


Promise 是异步编程的一种解决方案,比传统的解决方案——回调函数和事件——更合理和更强大。ES6新特性利用Promise解决JS异步执行时候回调函数嵌套回调函数的问题,更简洁地控制函数执行流程。

本文只是简单的分享一下学习过程中的心得,具体的内容推荐阅读阮一峰老师的博客 点我跳转

js延时对象Promise

创建一个延时对象

通过new实例化Promise,构造函数需要两个参数,第一个参数为函数执行成功以后执行的函数resolve,第二个函数为函数执行失败以后执行的函数reject。

  • new Promise 的时候会立刻执行回调函数
  • resolve()–解决当Promise 对象中异步任务成功时触发成功的回调
  • reject()–解决任务失败时的回调

举一个简单的小例子:

1
2
3
4
5
6
7
8
9
10
11
12
var p =new Promise(function(resolve,reject){
setTimeout(function(){
if(Math.random() <0.5){
var div = document.createElement('div');
document.body.appendChild(div);
resolve(div)
}
else{
reject('创建div失败');
}
},1000);
})

踩坑,注意Promise的状态

Promise 在创建时,没有状态的,通过resolve可以改变为成功,通过reject改变为失败,
Promise状态一旦确定了之后,就不能再做任何修改了

then() 设置Promise 对象,第一个参数为任务成功时回调,第二个是失败时回调

方法一(使用then())

1
2
3
4
5
6
7
8
p.then(function(div){
//成功
div.style.backgroundColor = 'yellow';

},function(str){
//失败
alert(str)
})

方法二(使用catch())

1
2
3
4
5
6
7
8
9
//catch() 设置任务失败时回调

p.then(function(div){
//成功
div.style.backgroundColor = 'yellow';
}).catch(function(str){
//失败
alert(str)
})

以上只是Promise的一些基础知识, 还有一些其他的知识点, 因为能力有限不一一介绍了

-------------本文结束感谢您的阅读-------------
没办法,总要恰饭的嘛~~