function delay(fn) {
setTimeout(() => {
fn()
console.log('你好')
}, 0)
}
delay(() => {
console.log('kaishi')
})
复制代码
这个回调写在加载的delay函数内,若是是多重回调,那么恭喜,你会在delay函数中写上delay(()=>{}, ()=> {}, ()=>{})promise
<!--代码-->
function delay(name) {
return new Promise((resolve, reject) => {
setTimeout(()=> {
resolve(name)
}, 2000)
})
}
delay('laoxie').then((res) => {
console.log(res)
})
<!--进入链式操做了-->
delay('laoxie').then((res) => {
console.log(res)
return delay('laoqin')
}).then((res) => {
console.log(res)
return delay('laomeng')
}).then((res) => {
console.log(res)
})
复制代码
看上去简洁很多,可是链式操做咋一看比回调看上去舒服多了,可是若是太长看上去仍是很别扭,尤为是是链式操做过长或者存在catch操做时koa
function delay(name) {
return new Promise((resolve, reject) => {
setTimeout(()=> {
resolve(name)
}, 2000)
})
}
async function getdata() {
var val1 = await delay('haifu');
console.log(val1)
var val4 = 1
console.log(val4)
var val2 = await delay('hao');
console.log(val2)
var val3 = await delay('fangl');
console.log(val3)
}
getdata()
复制代码
async包裹的函数,函数做用域内部的内容简直就是同步代码,顺著手往下写的感受。异步