美文网首页
generator函数和async/await函数

generator函数和async/await函数

作者: lokiio | 来源:发表于2019-04-23 14:42 被阅读0次

generator函数 yield next()

可以控制代码执行的暂停与恢复,但不改变执行顺序

//generator函数 yield next()
//可以控制代码执行的暂停与恢复,但不改变执行顺序
function timer(n) {
    setTimeout(function () {
        console.log(n,n,n)
    }, n)
}
function* test(){
    yield timer(3000);
    yield console.log(1111);
    yield console.log(2222);
    yield timer(5000);
    console.log(3333);
};

var t = test();

t.next(); 
t.next();
t.next();
t.next();
t.next();

// 输出顺序
// 1111
// 2222
// 3333
// 3000 不到3秒  (从第一次执行next就开始计时)
// 5000 2秒 (从第一次执行next就开始计时)

async await

基于generator函数的语法糖,await后面必然是一个promise对象,await可以等待异步函数执行完毕再继续执行后面的代码,可以控制代码的执行顺序

//async await
//基于generator函数的语法糖,await后面必然是一个promise对象,await可以等待异步函数执行完毕再继续执行后面的代码,可以控制代码的执行顺序

async function f() {
    let promise1 = new Promise((resolve, reject) => {
        setTimeout(() => resolve('done!'), 5000)
    })
    let result1 = await promise1 // 直到promise返回一个resolve值(*)
    console.log("111")
    console.log(result1) // 'done!' 

    let promise2 = new Promise((resolve, reject) => { 
        setTimeout(()=>resolve('lalala'),5000)
    })
    console.log("222")
   let result2=await promise2;
    console.log(result2);
    console.log("333")
};

f();
// 输出顺序
// 111   5秒后
// done!
// 222

// lalala 5秒后
// 333

参考 async/await:https://segmentfault.com/a/1190000013292562?utm_source=channel-newest

相关文章

  • async await

    async/await是什么 async是Generator的语法糖基本上async替代Generator函数声明...

  • async 函数

    async 函数是将 Generator 函数的 * 替换成 async,将 yield 替换成 await。as...

  • es7-async函数

    async函数是Generator函数的语法糖。async 表示函数里面有异步操作;await 表示紧跟后面的...

  • async/await 怎么用,如何捕获异常?

    async函数是Generator函数的语法糖。使用 关键字async来表示,在函数内部使用await来表示异步。...

  • ES6 async 函数

    是什么 async函数就是将 Generator 函数的星号(*)替换成async,将yield替换成await,...

  • async/await的深究

    我们都知道async/await是Generator函数的语法糖,为了更加深刻的了解async/await的原理,...

  • generator函数和async/await函数

    generator函数 yield next() 可以控制代码执行的暂停与恢复,但不改变执行顺序 async aw...

  • 12,异步的发展

    1,callback 2,Promise 3,Generator(co函数库) 4,Async/Await

  • async

    async 函数是什么?一句话,它就是 Generator 函数的语法糖 async函数体内不一定要有await,...

  • Koa基础 Async/Await 函数

    Async/Await 函数的特点 更好的语义,相比较Generator 对象的yield, Async/Awai...

网友评论

      本文标题:generator函数和async/await函数

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