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

Popular posts from this blog

ruby on rails - RuntimeError: Circular dependency detected while autoloading constant - ActiveAdmin.register Role -

c++ - OpenMP unpredictable overhead -

javascript - Wordpress slider, not displayed 100% width -