我使用某個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