节点生成器:在顶层使用yield

时间:2015-07-17 13:44:50

标签: node.js

我正在尝试创建一个工作,它重用了我的快速应用程序中的模块,这些模块强烈依赖于节点和谐。 (而且效果很好),但我不知道如何在“顶层”使用生成器。

所以我有这个文件job.js

var locator = require('./../locatorSetup');
yield locator.connect(); // returns a promise
console.log('connected');

我首先打电话给

node --harmony job.js

不幸的是我得到了:

yield locator.connect();
      ^^^^^^^
SyntaxError: Unexpected identifier

这样做的推荐方法是什么?

P.S。我正在使用Bluebird作为我的承诺库..

1 个答案:

答案 0 :(得分:3)

你做不到。 co(function *() { yield locator.connect(); }); 只能在生成器函数中使用。

考虑使用co在顶层执行生成器函数,如下所示:

co

join返回一个承诺,然后您可以使用它来跟踪传递的生成器函数的完成情况。