文章目录
有关ES6中Promise的理解
1.Promise的含义?
- Promise的初衷是:Promise对象能使我们更合理、更规范地进行处理异步操作
- Promise是:(英文翻译: 承诺) 是 JS 为 异步编程提供的解决方案、主要用来解决回调地域问题。也是一个容器,里面 存放的是 将来才会结束的 事件(异步请求) 。
2.如何创建一个Promise对像?
- 1.new Promise(function(resolve, reject) {})
回调函数 有 2个参数 , 分别代表 resolve (解决) , reject (拒绝), 并且都是函数 - 2.Promise.resolve();
创建一个 状态为 fulfilled 的Promise 对象 - Promise.reject();
创建一个 状态为 rejected 的 Promise对象
let p = Promise.resolve("ok")
p.then( res => {
console.log(res)
})
let p2 = Promise.reject("error");
p2.catch( error => {
console.log(error)
})
注:1.调用 resolve 函数, 代表 Promise的状态 会从 pending --> fulfilled
2.调用 reject 函数 , 代表 promise的状态 会从 Pending --> rejected
3.resolve, reject 可以在设置状态的同时 可以传递 1 个数据(最多一个数据),给 then / catch
3.Promise对像的三种状态?
- Pending(进行中)
- Fulfilled (已成功)
- rejected (已失败)
注:Promise 对象的三种状态,不受外界的影响,只有 Promise中存放的 将来会结束的事件 才会影响
Promise 状态 一旦改变、不可逆、
Pendding ====> Fulfilled
Pendding ====> rejected
let promise = new Promise(function(resolve, reject) {
resolve("ok") ;
});
promise.then(function(s) {
console.log("事情已被解决~~~", s)
})
/**
* 输出结果为:
事情已被解决~~~ ok
*/
4.thenable 对象是什么?
- thenable 对象 指的是 对象中, 有一个 then 对象
let obj = {
name: 'zhangsan',
then(s) {
console.log(this.name)
}
}
let p3 = Promise.resolve(obj);
5.有关Promise的小例子?
// 预测 3秒后,天空会下起小雨
function timeout(minseconds) {
return new Promise((resolve, reject) => {
// 延迟 用来 模拟异步
setTimeout(function() {
// 生成一个0 - 1随机数
let num = Math.random();
if (num >= 0.3) {
// 设置 Promise状态为 fulfilled
resolve()
}else{
reject()
}
}, minseconds)
})
}
// 预测3秒后,下雨、5秒后下雪, 如果都发生了,打印 天气真糟糕,否则 打印 天气还行
timeout(100).then(() => {
console.log("下雨了");
return timeout(100);
}).then(()=> {
console.log("下雪了")
console.log("天气真糟糕")
}).catch(() => {
console.log("天气还行")
})
今日分享希望对大家有所帮助