在程序中,有的函数执行所消耗的时间会比较长,这时会造成代码阻塞,导致下面的代码无法及时执行。
这时就需要异步回调来解决
把耗时的函数放到“后台”执行,等到它执行完毕,以回调函数的方式返回处理后的结果。
下面举个例子:
// 构造一个延迟resolve的promise对象
let delayGet = value =>
new Promise(resolve => setTimeout(() => resolve('resolve: ' + value), 1000))
// async把函数包装为Promise
// async内部await用于阻塞Promise
async function main() {
console.time('main')
console.log('pass0')
// 获得promise
let res1 = delayGet(1)
let res2 = delayGet(2)
console.log('pass1')
// 等待promise.resolve
console.log(await res1)
console.log(await res2)
console.log('pass2')
console.log(await delayGet(1))
console.log(await delayGet(2))
console.log('pass3')
console.timeEnd('main')
return 200
}
console.log('start')
// 异步回调
main().then(res => console.log(res))
console.log(&