javascript实现yield
没想到代码一次测试成功.~~只不过是FF下面,修改一下支持IE了。由于IE不认function表达式.
var coroutine = null;
var cofn_this = null;
var yield = function() {
coroutine.apply(cofn_this, arguments);
}
// support IE.
// NOTE: IE eval("function(){}") does not return a function object.
eval('fn = ' + fn.toString());
return function(cofn, cothis){
coroutine = cofn;
cofn_this = cothis;
return fn.apply(this)
};
}
Array.prototype.forEach = new Iterator(function () {
for (var i = 0; i < this.length; i ++) {
yield(this[i])
}
});
// example.
this.display = window.alert;
var A = [1,2,3,4,5];
A.forEach(function(it){
this.display(it)
}, this);
其中有一个技巧:
fn = eval(fn.toString())
用于将fn中的引用绑定到当前的上下文中,这样fn中的yield才会引用到我们定义的yield函数。
注意一下,如果你需要在coroutine里访问其他this上下文,需要向iterator传递进去, 如 example.
转载于:https://www.cnblogs.com/hackwaly/archive/2008/07/27/1252617.html
javascript实现yield相关推荐
- scrapy好看小说爬取源代码
scrapy spider文件 # -*- coding: utf-8 -*- import scrapy from scrapy import Request import sys reload(s ...
- 在JavaScript中实现yield,实用简洁实现方式。
原题还是老赵的: http://blog.zhaojie.me/2010/06/code-for-fun-iterator-generator-yield-in-javascript.html 原以为 ...
- 在javascript中使用yield
yield 关键字用来暂停和恢复一个生成器函数((function* 或遗留的生成器函数). /*** 在控制台每隔1秒,依次输出* 0,1,2,3,4*///延迟1秒返回n function del ...
- javascript函数全解
0.0 概述 本文总结了js中函数相关的大部分用法,对函数用法不是特别清晰的同学可以了解一下. 1.0 简介 同其他语言不同的是,js中的函数有2种含义. 普通函数:同其他语言的函数一样,是用于封装语 ...
- !! javascript_产量! 产量! 生成器如何在JavaScript中工作。
!! javascript by Ashay Mandwarya ?️?? 由Ashay Mandwarya提供吗? 产量! 产量! 生成器如何在JavaScript中工作. (Yield! Yiel ...
- javascript迭代器_JavaScript符号,迭代器,生成器,异步/等待和异步迭代器-全部简单解释...
javascript迭代器 by rajaraodv 通过rajaraodv JavaScript符号,迭代器,生成器,异步/等待和异步迭代器-全部简单解释 (JavaScript Symbols, ...
- JavaScript 异步编程--Generator函数、async、await
JavaScript 异步编程–Generator函数 Generator(生成器)是ES6标准引入的新的数据类型,其最大的特点就是可以交出函数的执行的控制权,即:通过yield关键字标明需要暂停的语 ...
- JavaScript异步调用的发展历程
同步与异步 通常,代码是由上而下依次执行的.如果有多个任务,就必须排队,前一个任务完成,后一个任务才能执行.这种连续的执行模式就叫做同步. a(); b(); c(); 复制代码 上面代码中,a.b. ...
- [译] 什么是 JavaScript 生成器?如何使用生成器?
原文地址:What are JavaScript Generators and how to use them 原文作者:Vladislav Stepanov 译文出自:掘金翻译计划 本文永久链接:g ...
最新文章
- 腾讯告诉你小孩子的钱也有多好赚,一月花费25万不是梦!
- mysql字符串区分大小写么_mysql字符串区分大小写的问题-阿里云开发者社区
- HDOJ 4883 TIANKENG’s restaurant
- eclipse执行单元测试报CreateProcess error=87的解决方法
- 16位/32位中断机制比較
- rust怎么拆除墙壁指令_人类跌落梦境:城堡怎么过 不少玩家卡在了第六关城堡地图这里...
- STL stack 容器
- 基于ProtocolBuffer和ysocket的Swift即时通讯服务器搭建
- webpack3.0 压缩css 但是不在html中引用,webpack怎样压缩css?
- python - 接口自动化测试 - MysqlUtil - 数据库操作封装
- 软件项目需求分析报告模板
- 误ghost后手工修改分区表来恢复数据
- [POI2013]LUK-Triumphal arch【树形DP+二分答案】
- PostMan发送请求参数带有路径特殊字符会返回400错误(与URL字符及URL编码值有关)
- rtl8812驱动分析(二)
- Linux相关实验总结
- linux之if [ $? -ne 0 ];
- 去除COD有机物树脂A-722MP
- 反射机制-Reflected
- Linux是什么?大牛十年Linux心得文档给你答案
热门文章
- 分类mysql_MySql分类
- 人脸检测算法_目前最强!开源人脸检测算法:RetinaFace
- OpenCV-Python 相机校准和消除畸变
- atomic 内存序_并行编程的内存顺序 2020-11-23
- 对于出差的看法_我对于挑选背包的一些小建议
- php5时区,[摘]PHP5.1时区设置
- 字符串扩展_JAVA
- Vue -渐进式JavaScript框架
- 《JAVA与模式》之抽象工厂模式
- 编辑器性能测试:Atom 、VS Code、Sublime Text