原 yield用法分析

yield主要用于在generator暂时挂起当前执行函数,如果返回callback对象,则可以实现多个callback的顺序执行。

这里具体的分析一下yield函数中每一步的执行过程

function *foo() {
    console.log(yield 1);
    console.log(yield 2);
    console.log(yield 3);
    console.log(yield 4);
    console.log(yield 5);
}

var it = foo();

console.log( it.next("xxx") ); 
console.log( it.next(111) ); 
console.log( it.next(222) );
console.log( it.next(333) );
console.log( it.next(444) );
console.log( it.next(555) );

从这段代码中看。

it.next第一次调用的时候,next会先传入一个“xxx”, 因为不存在一个接受的地方,所以不起作用,并在运行到yield 1的时候停止 到返回一个对象{ value: 1, done: false }。

当第二次调用next的时候没传入参数111到yield 1的位置,继续往下执行到yield 2的时候停止,返回一个{ value: 2, done: false }.......。所以最后的输出是

{ value: 1, done: false } 111 xxxxxx { value: 2, done: false } 222 { value: 3, done: false } 333 { value: 4, done: false } 444 { value: 5, done: false } 555 { value: undefined, done: true }

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏JetpropelledSnake

Python面试题之Python反射机制

 我们要导入另外一个模块,可以使用import.现在有这样的需求,我动态输入一个模块名,可以随时访问到导入模块中的方法或者变量,怎么做呢?

35520
来自专栏Deep learning进阶路

C++随记(一)---字符串数组的输入问题

首先来看一段程序: #include<iostream> using namespace std; int main(){ char name[10],s...

20300
来自专栏编程

Python面向对象6:​isinstance、super、有序字典

1、isinstance(对象名,类),查看对象是不是类的实例。 案例1:isinstance(对象名,类) classFoo: print('hh') obj...

19680
来自专栏自动化测试实战

接口测试基础——第7篇 简单的Python知识普及

32630
来自专栏WebDeveloper

php缓冲区与header函数之间的秘密

我们在实际的开发中,是否听说过在header之前不能有任何的实际输出。甚至有的认为header函数必须写在代码的最前面。可是你是否试验过header函数之前输出...

13420
来自专栏python3

python列表

"C:Program Files (x86)python3.6python.exe" D:/python3_study/list1.py

11930
来自专栏Java帮帮-微信公众号-技术文章全总结

深入理解java虚拟机笔记(一)-java内存区域与内存溢出

前言 这是深入理解Java虚拟机一书的笔记,来自第二章。因为这本书讲的比较深奥,这是第二次看,需要记录一下笔记。 2. 运行时数据区域 java虚拟机所管理的内...

32950
来自专栏Java学习网

Java同步问题面试知识学习

Java同步问题面试知识学习 同步 在多线程程序中,同步修饰符用来控制对临界区代码的访问。其中一种方式是用synchronized关键字来保证代码的线程安...

27470
来自专栏ppjun专栏

Multiple substitutions specified in non-positional format

as3.0以上在gradle.properties使用android.enableAapt2=true,as就会提示将要过期了,请设置成 android.en...

52030
来自专栏积累沉淀

死锁

什么是死锁: 是指两个或两个以上的进程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死...

21390

扫码关注云+社区

领取腾讯云代金券