写法不同
ES5正常写法
getAjax(url,(res)=>{
})
Promise
get(url).then((res)=>{})
async await
(async ()=>{
let res = await get(url)
})()
总结:
- ES5写法和promise写法,主要区别在写法的不同,可以让回调函数,划分出去在.then的函数里去执行,使得代码更加的例外,也可以将两个不同的函数,可以划分开来写。
- async和promise的区别,主要在于async时promise的语法糖,这种形式的写法在底层编译之后会自动转化成promise的写法
Promise实现原理
promise需要实现的功能
function fn(resolve,reject){
setTimeout(()=>{
if(true){
resolve()
}else{
reject()
}
})
}
var p1 = new LcPromise(fn)
p1.then(function(res){
document.body.style.background = "green"
console.log("成功做的事情")
console.log(res)
})
p1.catch(function(res){
document.body.style.background = "blue"
console.log("失败做的事情")
console.log(res)
})
P1 promise对象发送了异步操作,必然会有一个未来事件,在未来要执行。这个过程由传入的函数对象fn执行。函数fn里必然有成功执行和失败执行的函数。
1创建类构造对象
class LcPromise{
constructor(fn) {
//将成功的事件函数集成在successList数组里
this.successList