赞
踩
promise 是目前 JS 异步编程的主流解决方案,遵循 Promises/A+ 方案。
(1)promise 本身相当于一个状态机,拥有三种状态
(2)promise 对象原型上有一个 then 方法,then 方法会返回一个新的 promise 对象,并且将回调函数 return 的结果作为该 promise resolve 的结果,then 方法会在一个 promise 状态被扭转为 fulfilled 或 rejected 时被调用。then 方法的参数为两个函数,分别为 promise 对象的状态被扭转为 fulfilled 和 rejected 对应的回调函数
构造一个 promise 对象,并将要执行的异步函数传入到 promise 的参数中执行,并且在异步执行结束后调用 resolve( ) 函数,就可以在 promise 的 then 方法中获取到异步函数的执行结果
new Promise((resolve, reject) => {
setTimeout(() => {
resolve()
}, 1000)
}).then(
res => {
},
err => {
}
)
同时在 Promise 还为我们实现了很多方便使用的方法:
Promise.resolve 返回一个 fulfilled 状态的 promise
const a = Promise.resolve(1)
a.then(
res => {
// res = 1
},
err => {
}
)
Promise.all 接收一个 promise 对象数组作为参数,只有全部的 promise 都已经变为 fulfilled 状态后才会继续后面的处理。Promise.all 本身返回的也是一个 promise
const promise1 = new Promise((resolve, reject) => { setTimeout(() => { resolve('promise1') }, 100) }) const promise2 = new Promise((resolve, reject) => { setTimeout(() => { resolve('promise2') }, 100) }) const promises = [promise1, promise2] Promise.all(promises).then( res => { // promises 全部变为 fulfilled 状态的处理 }, err => { // promises 中有一个变为 rejected 状态的处理 } )
Promise.race 和 Promise.all 类似,只不过这个函数会在 promises 中第一个 promise 的状态扭转后就开始后面的处理(fulfilled、rejected 均可)
const promise1 = new Promise((resolve, reject) => { setTimeout(() => { resolve('promise1') }, 100) }) #### 算法刷题 大厂面试还是很注重算法题的,尤其是字节跳动,算法是问的比较多的,关于算法,推荐《LeetCode》和《算法的乐趣》,这两本我也有电子版,字节跳动、阿里、美团等大厂面试题(含答案+解析)、学习笔记、Xmind思维导图均可以分享给大家学习。 **[开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】](https://bbs.csdn.net/topics/618166371)** ![](https://img-blog.csdnimg.cn/img_convert/c582a01373152bb4cd38bc6ad5cc8027.png) **写在最后** **最后,对所以做Java的朋友提几点建议,也是我的个人心得:** 1. 疯狂编程 2. 学习效果可视化 3. 写博客 4. 阅读优秀代码 5. 心态调整
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。