我正在尝试在我的express node.js应用程序中创建一个翻译助手。 我已经制作了一个在视图上工作得很好的把手助手,但是我试图制作一个可以在我的控制器中使用的把手。 我希望它是同步。
我不想要这个:
var word = helpers.Translator('keyWord1', 'en');
return res.render("page", { word: word });
我想要这个:
var error = helpers.Translator('keyWord2', 'en');
return res.json({OK:false, error: error});
原因是因为我想把这个单词作为一个字符串,所以我可以将它作为json返回到页面,当处理ajax POST / GET上的错误时:
helpers.Translator('keyWord1', 'en', function(err, word1){
helpers.Translator('keyWord2', 'en', function(err, word2){
helpers.Translator('keyWord3', 'en', function(err, word3){
return res.render("page", { word1: word1, word2: word2, word3:word3 });
});
});
});
有时我需要返回多个翻译的单词,我绝对不想要这样做:
{{1}}
我的助手翻译器应该如何?
答案 0 :(得分:2)
你可以做的是让helpers.Translator
成为新的承诺,例如:
Translator (keyword, lng) {
return new Promise((resolve, reject) => {
...
resolve()
reject()
})
}
所以,当你调用帮助器时,你可以使用async / await执行类似的操作:
async function myFunction () {
try {
const word = await helpers.Translator('keyWord1', 'en');
const word2 = await helpers.Translator('keyWord2', 'en');
return res.render("page", { word, word2 }); // this is equal to ("page", { word: word, word2: word2 })
} catch (err) {
throw err;
}
}