Symbol generator

作者: Aniugel | 来源:发表于2019-10-06 10:57 被阅读0次
    ES6类
    ----------------------------------------------------------------
    数据类型:
        number、string、boolean、Object、undefined、function
    
        用typeof检测出来数据类型:
            symbol
    
        new Number(12)
        new String()
        new Array()
    
    symbol  使用情况一般
    
    定义:
        let syml = Symbol('aaa');
    
    注意:
        1. Symbol 不能new
        2. Symbol() 返回是一个唯一值
            坊间传说, 做一个key,定义一些唯一或者私有一些东
        3. symbol是一个单独数据类型,就叫 symbol, 基本类型
    
        4. 如果symbol作为key,用for in循环,出不来
    
    json  ->  for in
    
    ---------------------------------------------------------------
    箭头函数
        () =>{}
    
    generator函数
        生成器
    
    
        解决异步深度嵌套的问题, async
    
    语法:
        function * show(){
            yield
        }
        function* show(){
        }
        function *show(){
        }
    
        定义:
            function * gen(){
                yield 'welcome';
                yield 'to';
                return '牧码人';
            }
        调用:
            let g1 = gen();
            g1.next();  // {value:'welcome', done:false}
            g1.next();  // {value:'to', done:false}
            g1.next();  // {value:'牧码人', done:true}
    
        上述调用,手动调用,麻烦
    
    for .. of  自动遍历 generator
    
        return的东西,它不会遍历
    
    generator不仅可以配合 for ... of ...
    
    还可以:
    
    1. 解构赋值:
        let [a, ...b] = gen();
    2. 扩展运算符
        '...'
    
        console.log(...gen());
    3. Array.from()
        console.log(Array.from(gen()));
    
    generator结合 axios数据请求:
    
    -----------------------------------------------
    异步: 不连续,上一个操作没有执行完,下一个操作照样开始
    同步: 连续执行,上一个操作没有执行完,下一个没法开始
    
    关于异步,解决方案:
        a). 回调函数
        b). 事件监听
        c). 发布/订阅
        d). Promise对象
    
    co....
    -----------------------------------------------
    
     // let syml = Symbol('aaa');
        // console.log(syml)
    
        // let syml = new Symbol('aaa');
        // console.log(syml)//报错
    
        // let symbol = Symbol('liu');
        // let json = {
        //     a: 'apple',
        //     b: 'banana',
        //     [symbol]: 'orange',
        // }
        // console.log(symbol)//Symbol(liu)
        // console.log(typeof symbol)//symbol
        // console.log(json[symbol])//orange
    
        // for (let key in json) {
        //     console.log(key)//a b
        // }
    
        // function* gen() {
        //     yield 'hello';
        //     yield 'world';
        //     return '牧马人'
        // }
        // let g1 = gen();
        // console.log(g1)//gen {<suspended>}
        // console.log(g1.next())//value: "hello", done: false}
        // console.log(g1.next())//{value: "world", done: false}
        // console.log(g1.next())//value: "牧马人", done: true}
        // console.log(g1.next())//value: undefined, done: true}
    
        // for (let val of g1) {
        //     console.log(val)
        // }
    
        // let [a, b, c] = gen()
        // console.log(a, b, c)//hello world undefined
    
        // let [a, ...b] = gen()
        // console.log(a, b)//hello ["world"]
    
        // console.log(...gen())//hello world
        // console.log(Array.from(gen()))// ["hello", "world"]
    
        function* gen() {
            let val = yield 'itstrive'
            yield axios.get(`https://api.github.com/users/${val}`)
        }
        let g1 = gen()
        let username = g1.next().value
    
        console.log(g1.next(username).value)
        console.log(username)
        g1.next(username).value.then(res => {
            console.log(res.data)
        })
    

    相关文章

      网友评论

        本文标题:Symbol generator

        本文链接:https://www.haomeiwen.com/subject/fihepctx.html