javascript - Multiple functions in Node.js -
i have 1 big multi-functional function:
function trans() { var credentials = { clientid: 'turbofantrans', /* client id registered app */ clientsecret: 'gkqa2ru37dehafr4adh/sj94j5ge1s8ad7spp89mmis=' /* client secret registered app */ }; translator.detect(credentials, text, detectcb); function detectcb(err, from) { if (err) { sendmain('error', err); return; } translator.translate(credentials, text, from, lang, translatecb); } function translatecb(err, translated) { if (err) { sendmain('error', err); return; } console.log(text + lang + "=>" + translated); } }
assume declared, since multifunctional, doing wrong when calling trans()
here code snippet:
case 'translate': text += args[1]; lang += args[2]; trans(); text = ""; lang = ""; break;
when called, since messed up, text
, lang
return empty strings(they originally). can of guys me sort out whether in code or in brain? end result should translated text of text
in language of in lang
. thank in advance!
the reason trans()
returns because not block -- performs asynchronous request. text = "";
, lang = "";
executed before callbacks in trans()
.
an easy solution not use "global" values , pass in values instead:
case 'translate': text += args[1]; lang += args[2]; trans(text, lang); text = ""; lang = ""; break;
then change:
function trans() {
to:
function trans(text, lang) {
these local variables shadow "globals."
Comments
Post a Comment