问题标签 [co]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
201 浏览

javascript - 带有 co.wrap 和生成器箭头功能的 Mocha

我参加了一个现有的测试:

并尝试在生成器函数上使用箭头语法,但运行时抱怨

网络风暴 11

0 投票
0 回答
415 浏览

javascript - 需要具有承诺功能的模块

我像下面这样包装我的每个路由器模块IndexBase.js
如果我想要一个像这样的模块othercrudmodule.js
并且这些函数也必须用 promise 执行,

我也尝试过使用coothercrudmodule.js但我知道绝对不行

如何要求他们,正确地构建它?

IndexBase.js

其他crudmodule.js

更新
函数不承诺, 所以selectAll我得到异步结果?那么如何解决呢?
现在我使用yield othercrudmodule(dbClient).selectArticle()得到正确的同步结果,但这不是我想要的......

我想使用othercrudmodule(dbClient).selectAll(),模块中的函数使用数据库函数执行一些 crud 然后返回同步结果。

0 投票
1 回答
483 浏览

javascript - 从事件发射器创建生成器

我有一个异步执行某些操作的函数,例如,

我现在想在函数中“等待”直到hasher.read()可以返回而不是提前返回undefined(这就是上面的变体所做的)。

理想情况下,我会doSomething用作

有什么提示吗?

0 投票
0 回答
979 浏览

node.js - 使用 nodejs koa co-busboy 上传文件

使用KOA上传文件时,我使用co-busyboy解析文件字段。官方的例子是这样的:

由于某些原因,我想将所有“部分”流保存到一个数组中,并在获取所有文件流时执行实际的文件写入。IE:

问题是while循环不会继续。似乎如果我不调用 part.pipe,循环将停止。

那么我怎样才能让while循环继续呢?

0 投票
1 回答
155 浏览

javascript - Koa.js 在竞争条件下产生价值

我有一个使用 的应用程序,koa.js对于上下文,我正在连接一个不严格遵循请求/响应模式的外部系统。IE。在“请求”之后,它可能会或可能不会回答。

我能够将我的请求与这些响应相匹配,但是我无法将其放入 koa.js 响应中:

所以我的问题是,我如何在我的回调(或类似的东西)中使用 koa 回答 http 请求,以及如何在未调用回调时发送一个空答案(即,可能在延迟之后)?

我猜我正在寻找类似的东西Promise.race(),但是对于koa,所以使用yield

0 投票
2 回答
309 浏览

javascript - 在使用 ES6 类和生成器函数时,如何避免使用 `self = this` hack?

我试图使用显式的 .bind(this) 并且没有用。我也知道箭头功能在这里不起作用。

0 投票
1 回答
485 浏览

javascript - 使用 promise 等待数据库操作

我有一个调用另一个函数的函数,该函数连接到数据库以获取一些值。在执行完成之前,我无法继续进行,因为该值将用于数据库上的另一个事务。

yield用来确定该方法的完成,并promise解决或拒绝响应。这就是我的做法:

我收到此错误:

编辑

连接字符串:

0 投票
2 回答
1789 浏览

javascript - 将带有回调的约定 node.js 函数转换为生成器并产生

我是 koa.js 的新手,非常喜欢它,用它开始了一个项目。我需要使用 twilio 发送短信。

大多数对 twilio 包的调用都遵循这种结构。

我如何修改它以将其放入生成器函数中,在什么时候我将使用 yield 关键字?

如果您的回答建议使用 Co 库,请为我提供代码示例和位解释。

0 投票
2 回答
2178 浏览

node.js - 如何将 co 与 express 一起使用?

我在 node 上使用 express 并希望使用 co/yield 模式来处理我的异步回调。

当前代码如下所示:

这工作得很好,但我希望能够简化前两行:

是否有可能以某种方式将 co(function *() 集成到第一行? express 是否提供对 co() 和 yielding 函数的支持?

0 投票
2 回答
1079 浏览

node.js - 通过使用`co`包装回调来使回调异步的正确方法?

现在是 2016 年,Node 从 v4 开始就几乎完全支持 ES6,Promises 从 0.12 开始就已经存在。是时候将回调抛诸脑后了。

我正在开发一个基于commander.js的CLI 工具,它利用了很多异步操作——http 请求和用户输入。我想将 Commander 包装action在异步函数中,以便它们可以被视为承诺,并且还支持生成器(对于co-prompt我用于用户输入的库很有用)。

我尝试co以两种方式包装 CB:

1) program.command('myCmd') .action(program => co(function* (program) {...}) .catch(err => console.log(err.stack)) );

2)program.command('myCmd').action(co.wrap(function* (program) { .. }));

1)的问题是program参数没有传递

2)的问题是错误被吞没了......

我真的很想让它工作,因为它在我的用例中产生了更好的代码 - 涉及大量 http 请求并且还等待用户使用co-prompt库输入..

也许以program.Command.prototype.action某种方式包装是一个更好的选择吗?

谢谢!