单例模式,promise与async/await

  1. 复习了apply ,argument以及闭包在单例模式中的应用
    闭包在其中充当了储存器的作用,用来判断有无实例
  2. 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都先进行异步操作,后等到结果都成功后一起输出)

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容