背景:v8支持收益率(旧闻,我知道),那是伟大的JavaScript代码,如什么是node.js中使用回调做掉(见https://wingolog.org/archives/2013/05/08/generators-in-v8)node.js:如何从C++模块中产生?
问题 :由于JavaScript协程可以调用C++代码(通过模块),被调用的C++如何执行yield操作?为了说明:
// javascript
function* values()
{
yield 27;
mycppmodule.someFunction();
}
// c++
mycppmodule::someFunction()
{
__somehow_yield(28); // how can we make this happen?
}
// user of the code above
var o = values();
o.next(); // returns 27 - came from javascript above
o.next(); // returns 28 - came from c++ above, which is invoked by js
我怀疑答案是V8 API(https://v8docs.nodesource.com/node-7.4/)的地方,但我的搜索并没有屈服(双关语意)任何结果...
为什么不这样做'产量mycppmodule.someFunction()'和移动的问题了层? – Alnitak