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 中分析异步函数