问题标签 [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.
javascript - 需要具有承诺功能的模块
我像下面这样包装我的每个路由器模块IndexBase.js
,
如果我想要一个像这样的模块othercrudmodule.js
,
并且这些函数也必须用 promise 执行,
我也尝试过使用co
,othercrudmodule.js
但我知道绝对不行
如何要求他们,正确地构建它?
IndexBase.js
其他crudmodule.js
更新
函数不承诺,
所以selectAll
我得到异步结果?那么如何解决呢?
现在我使用yield othercrudmodule(dbClient).selectArticle()
得到正确的同步结果,但这不是我想要的......
我想使用othercrudmodule(dbClient).selectAll()
,模块中的函数使用数据库函数执行一些 crud 然后返回同步结果。
javascript - 从事件发射器创建生成器
我有一个异步执行某些操作的函数,例如,
我现在想在函数中“等待”直到hasher.read()
可以返回而不是提前返回undefined
(这就是上面的变体所做的)。
理想情况下,我会doSomething
用作
有什么提示吗?
node.js - 使用 nodejs koa co-busboy 上传文件
使用KOA上传文件时,我使用co-busyboy解析文件字段。官方的例子是这样的:
由于某些原因,我想将所有“部分”流保存到一个数组中,并在获取所有文件流时执行实际的文件写入。IE:
问题是while循环不会继续。似乎如果我不调用 part.pipe,循环将停止。
那么我怎样才能让while循环继续呢?
javascript - Koa.js 在竞争条件下产生价值
我有一个使用 的应用程序,koa.js
对于上下文,我正在连接一个不严格遵循请求/响应模式的外部系统。IE。在“请求”之后,它可能会或可能不会回答。
我能够将我的请求与这些响应相匹配,但是我无法将其放入 koa.js 响应中:
所以我的问题是,我如何在我的回调(或类似的东西)中使用 koa 回答 http 请求,以及如何在未调用回调时发送一个空答案(即,可能在延迟之后)?
我猜我正在寻找类似的东西Promise.race()
,但是对于koa
,所以使用yield
。
javascript - 在使用 ES6 类和生成器函数时,如何避免使用 `self = this` hack?
我试图使用显式的 .bind(this) 并且没有用。我也知道箭头功能在这里不起作用。
javascript - 使用 promise 等待数据库操作
我有一个调用另一个函数的函数,该函数连接到数据库以获取一些值。在执行完成之前,我无法继续进行,因为该值将用于数据库上的另一个事务。
我yield
用来确定该方法的完成,并promise
解决或拒绝响应。这就是我的做法:
我收到此错误:
编辑
连接字符串:
javascript - 将带有回调的约定 node.js 函数转换为生成器并产生
我是 koa.js 的新手,非常喜欢它,用它开始了一个项目。我需要使用 twilio 发送短信。
大多数对 twilio 包的调用都遵循这种结构。
我如何修改它以将其放入生成器函数中,在什么时候我将使用 yield 关键字?
如果您的回答建议使用 Co 库,请为我提供代码示例和位解释。
node.js - 如何将 co 与 express 一起使用?
我在 node 上使用 express 并希望使用 co/yield 模式来处理我的异步回调。
当前代码如下所示:
这工作得很好,但我希望能够简化前两行:
是否有可能以某种方式将 co(function *() 集成到第一行? express 是否提供对 co() 和 yielding 函数的支持?
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
某种方式包装是一个更好的选择吗?
谢谢!