javascript yield
代码:

function delay(time) {
return new Promise(function (resolve, reject) {
setTimeout(() => {
resolve();
}, time);
});
}
function* output() {
yield delay(500).then(() => console.log(1));
yield (function () { console.log(2); return 'aa' })()
yield delay(200).then(() => console.log(3));
yield (function () { console.log(4); return 'aa' })()
}
function runGen(gen, next) {
const item = gen.next();
if (item.done) return;
const { value } = item
if (value instanceof Promise) {
value.then(() => runGen(gen))
} else {
runGen(gen)
}
}
runGen(output());
输出:
1
2
3
4
javascript yield的更多相关文章
- 线程Coroutines 和 Yield(转)
之前一直很纠结这个问题,在网上找到了这篇文章,给大家分享下: 第一种方法: void Start() { print("Starting " + Ti ...
- javascript的ES6学习总结(第三部分)
1.ES6中的面向对象的类 1.1.定义类 在ES5中,我们写一个类,通常是这么写的 function Person(name,age){ this.name = name; this.age = a ...
- Python协程与JavaScript协程的对比
前言 以前没怎么接触前端对JavaScript 的异步操作不了解,现在有了点了解一查,发现 python 和 JavaScript 的协程发展史简直就是一毛一样! 这里大致做下横向对比和总结,便于对这 ...
- JSBinding + SharpKit / 实战:转换 Survival Shooter
从 asset store 下载 Survival Shooter (商店里有2个版本,一种是给Unity5用的,一个是给Unity4.6用的,我们这个实验用的是后者,版本是2.2.如果) 1 删除多 ...
- JSBinding + SharpKit / Coroutine支持
首先得深入了解协程的原理.如果还没有完全理解,建议看这篇: http://wiki.unity3d.com/index.php/CoroutineScheduler 另外还要对 JavaScript ...
- 在JavaScript中实现yield,实用简洁实现方式。
原题还是老赵的: http://blog.zhaojie.me/2010/06/code-for-fun-iterator-generator-yield-in-javascript.html 原以为 ...
- javascript笔记04:let语句 和 yield语句 和 with语句
1.yield语句: <script type="application/javascript; version=1.7"> function generator() ...
- [JavaScript]ECMA-6 yield语法
概述 yield关键字用于并且仅限于生成器函数(generator)内部,作用是暂停(并返回)/重启(可选修改该栈环境变量)该函数栈环境. 一般语法 调用生成器函数时返回一个可迭代对象,当调用该对象的 ...
- Javascript 严格模式详解
转自http://www.ruanyifeng.com/blog/2013/01/javascript_strict_mode.html 一.概述 除了正常运行模式,ECMAscript 5添加了第二 ...
- 机器指令翻译成 JavaScript —— 终极目标
上一篇,我们顺利将 6502 指令翻译成 C 代码,并演示了一个案例. 现在,我们来完成最后的目标 -- 转换成 JavaScript. 中间码输出 我们之所以选择 C,就是为了使用 LLVM.现在来 ...
随机推荐
- Intellij IDEA开发Scala程序
前言 Intellij IDEA是一款功能强大的集成开发环境(IDE),可用于开发各种编程语言,包括Scala.Scala是一种功能强大的静态类型编程语言,它结合了面向对象和函数式编程的特性. 本文我 ...
- mongodb c driver bson的嵌套访问与层次结构
使用c访问mongodb,需要用到mongodb c driver.c++的driver也是基于c driver封装的. 在使用c driver访问mongodb时,需要与bson打交道,不过c dr ...
- VLOOKUP函数10种经典用法
VLOOKUP函数是Excel中非常常用的函数之一,可以用于在一个区域或表格中查找某个值,并返回该值所在行的另一个指定列中的数值.以下是VLOOKUP函数的10种经典用法: 基本的VLOOKUP用法: ...
- 公司oa是什么?一般公司oa有什么样功能?
公司OA(Office Automation)是指通过计算机和信息技术来实现办公自动化的系统. 它提供了一系列的功能和工具,用于协调.管理和处理公司内部的日常事务和流程.OA系统旨在提高工作效率.加强 ...
- VM离线安装Centos 8以及配置
一.安装 1.预装准备 1.1. 硬件准备 物理内存:2G以上(这里指系统搭建所需占用空间) 物理外存:20G(这里指系统搭建所需占用空间) 1.2. 环境搭建准备 Window10系统电脑一台.Vm ...
- Cannot resolve symbol ‘c:forEach‘;Cannot resolve taglib with uri http://java.sun.com/jsp/jstl/corede
#### Cannot resolve taglib with uri http://java.sun.com/jsp/jstl/core:等类似,都是因为 在jsp页面中加入<%@ tagli ...
- Java八股面试整理(4)
34.遇到过异常吗,如何处理? 在Java中,可以按照如下三个步骤处理异常: 捕获异常 将业务代码包裹在try块内部,当业务代码中发生任何异常时,系统都会为此异常创建一个异常对象.创建异常对象之后,J ...
- [GDOIpj221D] 小学生计数题
第四题 小学生计数题 提交文件: counting.cpp 输入文件: counting.in 输出文件: counting.out 时间空间限制: 1 秒, 256 MB 作为 GDOI 的组题人, ...
- viewPager2页面的切换
使用流程: 1.定义ViewPager 2.为ViewPager创建Adapter ViewPagerAdapter package com.example.viewpagerandfragm ...
- 安装NETDATA集群监控面板
安装NETDATA集群监控面板 介绍 官方链接 演示网页:https://my-netdata.io/ 官方首页:http://netdata.cloud/ 文档地址:http://docs.netd ...