手记

【金秋打卡】第13天 4-11 异步编程解决方案Generator(上)

课程名称:JavaScript ES(6-11)全版本语法 每个前端都需要的基础课

课程讲师: 谢成

课程内容:
异步编程解决方案Generator(上)

课程收获:

构造函数在Generator全局范围内不可用。的实例Generator必须从生成器函数返回:

// function foo() {
//     for (let i = 0; i < 3; i++) {
//         console.log(i)
//     }
// }
// foo()

// function* foo() {
//     for (let i = 0; i < 3; i++) {
//         yield i
//     }
// }
// // console.log(foo())
// let f = foo()
// console.log(f.next())
// console.log(f.next())
// console.log(f.next())
// console.log(f.next())

// function* gen(args) {
//     args.forEach(item => {
//         yield item + 1
//     })
// }

// function* gen(x) {
//     let y = 2 * (yield(x + 1))
//     let z = yield(y / 3)
//     return x + y + z
// }
// let g = gen(5)
// console.log(g.next()) // 6
// console.log(g.next()) // NaN
// console.log(g.next()) // NaN

// let g = gen(5)
// console.log(g.next()) // 6
// console.log(g.next(12)) // y=24  8
// console.log(g.next(13)) // z=13 x=5 42

// function* count(x = 1) {
//     while (true) {
//         if (x % 7 === 0) {
//             yield x
//         }
//         x++
//     }
// }
// let n = count()
// console.log(n.next().value)
// console.log(n.next().value)
// console.log(n.next().value)
// console.log(n.next().value)
// console.log(n.next().value)

function ajax(url, callback) {
    // 1、创建XMLHttpRequest对象
    var xmlhttp
    if (window.XMLHttpRequest) {
        xmlhttp = new XMLHttpRequest()
    } else { // 兼容早期浏览器
        xmlhttp = new ActiveXObject('Microsoft.XMLHTTP')
    }
    // 2、发送请求
    xmlhttp.open('GET', url, true)
    xmlhttp.send()
    // 3、服务端响应
    xmlhttp.onreadystatechange = function () {
        if (xmlhttp.readyState === 4 && xmlhttp.status === 200) {
            var obj = JSON.parse(xmlhttp.responseText)
            // console.log(obj)
            callback(obj)
        }
    }
}

function request(url) {
    ajax(url, res => {
        getData.next(res)
    })
}

function* gen() {
    let res1 = yield request('static/a.json')
    console.log(res1)
    let res2 = yield request('static/b.json')
    console.log(res2)
    let res3 = yield request('static/c.json')
    console.log(res3)
}
let getData = gen()
getData.next()

谢谢老师,讲的非常细致,很容易懂。这一节学的是异步编程解决方案Generator(上),给以后的学习打下了基础。
原来ES6-11能有这么多种性质,以及对ES6-11有了新的认识,期待后边的学习

0人推荐
随时随地看视频
慕课网APP