【问题标题】:How to instantiate an object whose constructor uses yield?如何实例化构造函数使用yield的对象?
【发布时间】:2015-03-25 10:29:53
【问题描述】:

我有一个使用yield 语句的辅助构造函数:

var co = require('co');

var Helper = co(function* () {
    var response = yield foo();
})
module.exports.Helper = Helper;

我想实例化它:

var Helper = require('./helper.js').Helper;
var helper = new yield Helper();  // TypeError

但我收到以下错误:TypeError: You may only yield a function, promise, generator, array, or object, but the following was passed: "[object Object]"

关于如何正确实例化它的任何想法?


编辑

删除了对 koa 的引用,因为我使用的是 co(正如 vanthome 所指出的那样)。

【问题讨论】:

标签: javascript constructor yield co


【解决方案1】:

这里没有必要在生成器函数上使用new 运算符。运算符。

您的示例也与koajs 无关,您显然在这里使用co,这是另一回事。 Sinve 版本 4 的 co,您可以使用的电话 co(...) gives you a promise

【讨论】:

  • 啊,我似乎在这里混淆了一些事情。感谢您的回复!
  • 我不认为new yield … 在语法上是错误的。你只需要让 yield 表达式返回一个构造函数:-)
  • 使用本指南作为生成器的介绍:davidwalsh.name/es6-generators 这是我所知道的最好的。 @Bergi:你说得对,我已经更新了答案。
猜你喜欢
  • 1970-01-01
  • 2013-11-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-28
  • 1970-01-01
相关资源
最近更新 更多