- 复习了apply ,argument以及闭包在单例模式中的应用
闭包在其中充当了储存器的作用,用来判断有无实例 - promise对象的后代还是promise,成功resolve,失败reject,调用成功then,失败则是catch
配合async/await简直了。实现对回调数据的等待、(异步中的同步实现)
async/await中的await使用的顺序很重要(因为实现同步),要想实现异步操作后同步计算输出,可以使用以下代码
async function add1(x) {
var a = resolveAfter2Seconds(20)
var b = resolveAfter2Seconds(20)
return x + await a + await b
}
add1(10).then(v => {
console.log(v) // 2秒后输出50
})
async function add2(x) {
var a = await resolveAfter2Seconds(20)
var b = await resolveAfter2Seconds(30)
return x + a + b
}
add2(10).then(v => {
console.log(v) // 4秒后输出60
})
async function add3(x) {
let result = await Promise.all([resolveAfter2Seconds(30),resolveAfter2Seconds(30)]) //
return result.reduce((a,b)=>a+b)+x
}
add3(10).then(v => {
console.log(v) // 2秒后输出70
})
add1中直接计算然后在将结果进行await相加,实现先异步获取结果,同步输出;和add3使用的Promise.all方法一样(每个promise都先进行异步操作,后等到结果都成功后一起输出)