我使用某个Node.js类进行文本分类。在最简单的形式,它看起来像这样:将异步函数转换为同步函数
function TextCategorizer(preprocessors) {
...
}
“预处理程序”是形式的函数数组:
function(text) {
return "<modified text>"
}
他们可以使用,例如,以去除标点符号,转换成下壳体等
我可以使用TextCategorizer这样的:
var cat = newTextCategorizer(preprocessors);
cat.train(text1,class1);
cat.train(text2,class2);
...
console.log(cat.classify(text3,class3);
的preproces为了每个训练文本和分类文本,都会调用sors。
现在,我需要添加一个新的预处理器函数 - 拼写纠正器。最好的拼写纠正我发现作品异步(通过Web服务),因此,功能如下:
correctSpelling(text, callback) {
...
callback(corrected_version_of_text);
}
即它不返回值,而是要求与价值的回调函数。
我的问题是:我如何使用correctSpelling函数作为预发送器阵列中的一个预处理器发送给TextCategorizer?
为什么不异步使用它呢?异步是节点口头禅。 –
作为一个独立的函数,我当然可以异步使用它。但正如我在问题中所解释的那样,我想用它作为另一个模块的输入,它需要一个同步功能。 –
使用异步调用将预处理程序放入关闭中。然后在这个闭包中定义你的回调,所以回调函数可以访问预处理器数组。 – ChrisCM