前几天在智一面看到很多公司的前端对promise的要求都比较高,今天来复习一下。
首先,promise是什么?
我对promise对象的理解,promise就是一个处理异步操作的一个工具。一般情况下,有异步操作时,我们就可以使用promise对象进行封装。
我们先来看一个promise对象的简单使用方法。
new Promise ((resolve,reject) => {
setTimeout(() => {
//成功时调用
resolve('Hello World')
//失败时调用
reject('error message');
},1000)
}).then(res => {
console.log(res)
}).catch(err => {
console.log(err)
})
new -> 构造函数(1.保存了一些状态信息 2.执行传入的函数)
再执行传入的回调函数时, 会传入两个参数, resolve, reject.本身又是函数,可以执行相应的内容
接着我们继续来看promise的其他处理形式
new Promise((resolve,reject) => {
setTimeout(() => {
resolve("Hello world");
reject("error message")
},1000)
}).then(res => {
console.log(res)
},err => {
console.log(err)
})
这种形式没有catch,报错信息写在then里面
接着我们来看promise的链式调用
new Promise ((resolve,reject) => {
setTimeout(() => {
resolve()
},1000)
}).then(() => {
console.log('第一次拿到结果!!!')
return new Promise((resolve,reject) => {
setTimeout(() => {
resolve();
},1000)
})
}).then(() => {
console.log('第二次拿到数据,处理代码')
return new Promise( (resolve,reject) => {
setTimeout(() => {
resolve();
},1000)
})
}).then(() => {
console.log('第三次拿到结果,处理代码')
})
今天就先复习到这里,准备后天智一面笔试吧
智一面gtalent提供超多的web前端工程师小程序开发的笔试题