javascript 关于生成器函数和异步/ AWAIT的区别与联系的DEMO

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了javascript 关于生成器函数和异步/ AWAIT的区别与联系的DEMO相关的知识,希望对你有一定的参考价值。

function now() {
    var d = new Date();
    return ('0' + d.getHours()).substr(-2) + ':' + ('0' + d.getMinutes()).substr(-2) + ':' + ('0' + d.getSeconds()).substr(-2);
}

function sleep(t, n) {
    return new Promise(function (resolve) {
        console.log('begin: ' + n + ' sleep ' + t + 'ms, ' + now());
        setTimeout(function () {
            console.log('end: ' + n + ' slept ' + t + 'ms, ' + now());
            resolve();
        }, t);
    });
}

async function asyncFunc(n) {
    await sleep(2000, n);
    await sleep(3000, n);
}

function* gen(n) {
    yield sleep(2000, n);
    yield sleep(3000, n);
}

function spawn1(g) {
    var r = g.next('spawn1');
    if (r.value != undefined) {
        r.value.then(function () {
            spawn1(g);
        });
    }
}

function spawn2(g) {
    var pool = [];
    for (var r=g.next('spawn2'); r.value!=undefined; r=g.next('spawn2')) {
        pool.push(g.value);
    }
    Promise.all(pool);
}

spawn1(gen('spawn1'));
spawn2(gen('spawn2'));
asyncFunc('asyncFunc');

以上是关于javascript 关于生成器函数和异步/ AWAIT的区别与联系的DEMO的主要内容,如果未能解决你的问题,请参考以下文章

关于js函数中存在异步的情况下的变量的分析

Javascript 异步函数的“等待”的正确心智模型:生成器的“产量”与“promise.then()”?

JavaScript中ES6新特性-Generator异步方案

AngularJS 中的Promise --- $q服务详解

javascript生成器

在 Javascript 中分析异步函数