2017-10-17 4 views
-2

Je suis assez nouveau dans node.js et essaye de faire une fonction qui fait une demande à une API RESTful.Curl Post/Get comme fonction dans node.js

Je suis confronté à un problème pour renvoyer la valeur de ma fonction.

est ici le code de la demande

=> function curl_post(method); 

^ options de retour pour la demande ci-dessous.

requested(curl_post('some_method'), function (error, response, result) { 
    if (!error && response.statusCode == 200) { 
     console.log(result.status); 
    } 
}) 

code ci-dessus fonctionnent bien, mais ce que je veux est d'ajouter « demandé() {} » à une fonction qui est capable de jeter la valeur de retour comme:

function blabla(){ 
    requested(curl_post('some_method'), function (error, response, result) { 
    if (!error && response.statusCode == 200) { 
     return result.status; 
    } 
    }) 
} 

J'ai essayé fonctionne ci-dessus, mais retourne "Undefined". Donc, quelqu'un sait comment retourner "result.status", donc j'ai juste besoin d'appeler la fonction blablabla() quand je veux obtenir la valeur?

+0

On ne sait vraiment pas ce que font les fonctions que vous avez définies ('requested',' curl_post', etc). Pouvez-vous être un peu plus clair sur l'origine de ces produits, et peut-être nous fournir un code exécutable? –

Répondre

0

La réponse courte est que vous ne pouvez pas return une valeur à partir du rappel. Vous devez appeler encore une autre fonction qui déplace le résultat vers l'avant. Vous devriez consulter quelques tutoriels Node, ou google "callback hell". Mais, très court exemple, faites ceci:

requested(curl_post('some_method'), function (error, response, result) { 
    if (!error && response.statusCode == 200) { 
     doTheRestOfYourCodeHere(response.status) 
    } 
    }) 
// any "in flow" code here has no easy access to response 
// in fact, code here will probably run before curl completes 

function doTheRestOfYourCodeHere(status) { 
    ... 
}