returnværdi fra en callback-funktion i JavaScript?
Jeg bruger node.js og biblioteket Translate. Kan jeg gøre noget i stil med dette?
function traduce(text){
translate.text(text,function(err,result){
return result;
});
}
Og så bruge resultatet? Det returnerer mig altid "undefined". Er der nogen måde at bruge resultatet uden at gøre dette? : .
translate.text(text,function(err,result){
// use result
// some logic
});
Svar #1
Du udfører ikke funktionen, du videregiver en reference til en anonym funktion. Hvis du vil have returværdien, skal du udføre den:
function traduce(text){
translate.text(text, (function(err,result){
return result;
})());
}
Svar #2
Det er ikke så meget et spørgsmål om, hvorvidt du kan gøre det, men om du bør gøre det. Det handler virkelig om at forstå asynkron kode, noget som enhver introduktion til node.js dækker i en vis dybde.
Translate bruger selv Google API'en, så den sender en forespørgsel til en anden server. Hvis du skulle vente på resultatet, ville det være en langvarig blokerende operation, hvilket er uønsket.
