我有一個功能,拼寫檢查了一句:同步方法
let spellCheck = input => {
let corrected = [];
input.split(' ').map((word, index, array) => {
G.dictionary.spellSuggestions(word, (err, correct, suggestion, origWord) => {
correct ? corrected[index] = origWord : corrected[index] = suggestion[0];
});
});
// terrible solution
Meteor._sleepForMs(200);
return ['SPELL', input, corrected];
};
這裏的問題是,之前修正陣列充滿了有詞的正確版本return語句發生拼寫錯誤。我可怕的解決方案是在返回語句之前調用睡眠函數,但我不能依賴它。
我已經看過使用Meteor.wrapAsync()的選項,但我不知道使用它的方法。我試着(天真地)使異步的spellCheck方法,但當然不起作用。
有沒有辦法讓G.dictionary.spellSuggestions方法本身同步呢?
G.dictionary.spellSuggestions是一個異步函數。 你唯一的解決方案是讓spellCheck成爲一個異步函數。不要使用睡眠 – thangngoc89
@ thangngoc89這將如何解決我的問題?這同樣適用於此,因爲即使spellCheck函數異步運行,更正後的列表仍然是空的。 –
通過'異步'我的意思是回調,或承諾,或異步/等待。 – thangngoc89