Generators allow you to use the yield * syntax to yield each iteration of nested iterable as part of the main iterations. This enables you to combine multiple arrays, strings, or any iterable with anything you want to yield from your main generator.
const abcs = ["A", "B", "C"]const reverseIterator = function* (array) {yield* arrayyield* array.map(letter => letter.toLowerCase())yield Math.random(...
我一直在为koa应用编写身份验证路由器.
我有一个模块,可以从数据库获取数据,然后将其与请求进行比较.如果认证通过,我只想接下来运行yield.
问题在于,与数据库通信的模块返回了一个Promise,如果我尝试在该Promise中运行下一个yield,则会收到错误消息.根据是否使用严格模式,SyntaxError:意外的严格模式保留字或SyntaxError:意外的标识符.
这是一个简化的示例:var authenticate = require('authenticate-signature');// authRouter...
我对节点有些新意,而且我对koa完全不熟悉.我正在尝试使用生成器来对API执行异步Web请求,但我无法弄清楚如何将所有部分放在一起.
作为一个注释,我使用蓝鸟,因为我看到一些例子这样做,这似乎是一个好主意.如果有一种更简单的方法来做我想要的没有蓝鸟,那也是完全没问题.
在我的模块中:plugin.searchForItem = function * (name) {Promise = require('bluebird');request = Promise.promisifyAll(require('request'));console.log("m...
序在Javascript中,大家讨论的最多的就是异步编程的操作,如何避免回调的多次嵌套。异步操作的回调一旦嵌套很多,不仅代码会变的臃肿,还很容易出错。各种各样的异步编程解决方案也被不断提出,例如大家所熟知的Promise,co等等。今天所讲的Generator和yield就是和异步编程有关,可以帮助我们把异步编程同步化。Generator简介Generator在形式上和函数差不多,只是在function和函数名之间多了一个*。Generator内部必须使用yield关键...
刚才忽然灵机一动,迭代器我们很少会真的直接傻乎乎的next去遍历的,那为什么一定要实现这个傻乎乎的next呢?直接实现each,这样,这样反过来,Yeah,一通百通,不一会儿就写出了第一个超简洁版本: 代码如下: function yieldHost(yieldFunction) { return function (processer) { var yield = function (result) { processer(result) }; yieldFunction(yield); }; } 思路一换,代码真简洁。 先附上例子,然后来谈原理。 首先我们...
没想到代码一次测试成功.~~只不过是FF下面,修改一下支持IE了。由于IE不认function表达式. 代码如下: var Iterator = function (fn) { 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 ob...
本文实例讲述了JavaScript使用yield模拟多线程的方法。分享给大家供大家参考。具体分析如下:
在python和C#中都有yield方法,通过yield可以实现很多多线程才能实现的功能。
对javascript有版本要求:JavaScript 1.7function Thread( name ) {for ( var i = 0; i 上面代码输入结果如下:foo: 0
bar: 0
foo: 1
bar: 1
foo: 2
bar: 2
foo: 3
bar: 3
foo: 4
bar: 4希望本文所述对大家的javascript程序设计有所帮助。
本文实例讲述了JavaScript使用yield模拟多线程的方法。分享给大家供大家参考。具体分析如下:
在python和C#中都有yield方法,通过yield可以实现很多多线程才能实现的功能。
对javascript有版本要求:JavaScript 1.7
function Thread( name ) {for ( var i = 0; i < 5; i++ ) {Print(name+: +i);yield;}
}
//// thread management
var threads = [];
// thread creation
threads.push( new Thread(foo) );
threads.push( new Threa...
没想到代码一次测试成功.~~只不过是FF下面,修改一下支持IE了。由于IE不认function表达式. 代码如下: var Iterator = function (fn) { 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 ob...
刚才忽然灵机一动,迭代器我们很少会真的直接傻乎乎的next去遍历的,那为什么一定要实现这个傻乎乎的next呢?直接实现each,这样,这样反过来,Yeah,一通百通,不一会儿就写出了第一个超简洁版本: 代码如下:function yieldHost(yieldFunction) { return function (processer) { var yield = function (result) { processer(result) }; yieldFunction(yield); }; } 思路一换,代码真简洁。 先附上例子,然后来谈原理。 首先我们...
我对当前关于添加异步函数和关键字等待下一个EcmaScript的讨论感到困惑.
我不明白为什么有必要在function关键字之前使用async关键字.
从我的角度来看,await关键字等待生成器或promise的结果,函数的返回应该足够了.
await应该可以在普通函数和生成器函数中使用,而不需要额外的异步标记.
如果我需要创建一个函数作为await的结果,我只需使用一个promise.
我的理由是this很好的解释,下面的例子来自:async function setupNewUser(name)...
我正在尝试HTML5的新画布标签,我在其中渲染和动画一些简单的形状.我的画布脚本具有以下功能:function initializeSquarePositions(rows, columns) {for (var x = 0; x < canvas.width; x += canvas.width / columns)for (var y = 0; y < canvas.height; y += canvas.height / rows)yield {x: x, y: y};
}出于某种原因,此代码在Firefox中执行得非常好,但在Chrome中根本不起作用.这两个浏览器都是最新版本,我的脚本标签标记为版本= 1...
浏览koa样本,文档和中间件,我注意到两种形式的产量都被使用而没有任何特别的区别我注意到了.最极端的情况是在koa-mount,其中sample code使用下一个产量;表格,包itself使用yield *几次.其他包(例如koa-views)也使用yield next格式.
我理解语言所定义的两种形式之间的区别,但不明白在koa的语境中它们是如何互换使用的,以及何时使用一种形式是正确的.
编辑29/5
经过一些更多的研究,我明白,因为koa建立在co之上,并且co能够处理多种类型...
我正在研究javascript ES6的生成器.
当我试图理解我的书的一个例子时,我遇到了麻烦,因为下面的代码中没有逗号的数组.
这段代码是如何工作的?
[代码]let gen = function*(){return [yield yield]; // how this code line works?
}
let genObj = gen();
console.log(genObj.next());
console.log(genObj.next(10));
console.log(genObj.next(20));[运行结果]Object {value: undefined, done: false}
Object {value: 10, done: false...
参见英文答案 > ES6 Generators: First call to next() 3个> ES6 generators mechanism – first value passed to next() goes where? 3个我正在处理ES6中的Generators,我想从概念上理解下面函数中发生的事情:function* createNames() {const people = [];people.push(yield);people.push(yield);people.push(yield);return people;
}const it...