Sono di fronte a piccoli problemi nel restituire un valore dalla funzione di callback in Node.js, cercherò di spiegare la mia situazione il più semplice possibile. Considerate Ho un frammento di codice, che prende URL e colpisce l'URL e fornisce l'output:Restituzione di un valore dalla funzione di callback in Node.js
urllib.request(urlToCall, { wd: 'nodejs' }, function (err, data, response) {
var statusCode = response.statusCode;
finalData = getResponseJson(statusCode, data.toString());
});
ho cercato di avvolgere all'interno di una funzione e di restituire un valore come questo:
function doCall(urlToCall) {
urllib.request(urlToCall, { wd: 'nodejs' }, function (err, data, response) {
var statusCode = response.statusCode;
finalData = getResponseJson(statusCode, data.toString());
return finalData;
});
}
Perché nella mia codice Node.js, ho un sacco di if-else
dichiarazione in cui verrà deciso il valore di urlToCall
, in questo modo:
if(//somecondition) {
urlToCall = //Url1;
} else if(//someother condition) {
urlToCall = //Url2;
} else {
urlToCall = //Url3;
}
Il fatto è che tutte le istruzioni all'interno a urllib.request
rimarrà lo stesso, tranne il valore di urlToCall
. Quindi sicuramente ho bisogno di mettere quei codici comuni all'interno di una funzione. Ho provato la stessa cosa ma in doCall
mi restituirà sempre undefined
. Ho cercato in questo modo:
response = doCall(urlToCall);
console.log(response) //Prints undefined
Ma se stampo valore all'interno doCall()
esso stampe perfettamente, ma sarà sempre tornare undefined
. Secondo la mia ricerca, sono venuto a sapere che non possiamo restituire valori dalle funzioni di callback! (è vero)? Se sì, qualcuno mi può consigliare come gestire questa situazione, in quanto voglio evitare il codice duplicato in ogni blocco if-else
.
"è vero?" - Sì, sicuramente. –
@ JanDvorak, quindi non ho altre opzioni oltre alla duplicazione del codice? ;) –
Il superamento di alcune delle proprie richiamate può aiutare? Credo di sì. –