Javascript 如何仅在从restcall节点js获得响应后调用函数

Javascript 如何仅在从restcall节点js获得响应后调用函数,javascript,node.js,Javascript,Node.js,我有一个request.post调用和另一个函数。我需要将restcall的响应作为参数传递给函数 我现在面临的问题是,甚至在我从rest调用得到响应之前,函数就被调用了,空值也被传递了。我知道我们需要使用一些callabck来解决这个问题。但是我不知道怎么做。有人能帮我吗 app.post('/verifycreds',function(req,res) { var reqdata = req.body; var data = {}; data.custid = reqdata.c

我有一个request.post调用和另一个函数。我需要将restcall的响应作为参数传递给函数

我现在面临的问题是,甚至在我从rest调用得到响应之前,函数就被调用了,空值也被传递了。我知道我们需要使用一些callabck来解决这个问题。但是我不知道怎么做。有人能帮我吗

app.post('/verifycreds',function(req,res) {
  var reqdata = req.body;
  var data = {};
  data.custid = reqdata.custid;
  request.post({
    url:'https://database.mybluemix.net/verifycredentials',
    headers:{
      'Content-Type':'application/json'
    },
    body:data,
    json:true
}, function(err,response) {
  verifycreds(response.body);  
});

function verifycreds(data) {
  if((datareq.customerid === data.customerid ) && (datareq.password == data.password)){
    res.send("valid");
  } else {
    res.send("invalid");
  }
}

那么,只有在收到请求的响应后,我才能调用verifycreds函数。post调用..需要帮助吗

您的回调有效,这是回调参数中的问题。应使用三个参数对其进行定义:

  • 错误
  • 回应
  • 身体
所以正确的代码是:

request.post({
 url: 'https://database.mybluemix.net/verifycredentials',
 headers: {
   'Content-Type': 'application/json'
 },
 body: data,
 json: true
}, function(err, res, body) {
  // TODO: process possible errors
  // if (err) { ...
  verifycreds(body);  
});

您的回调有效,这是回调参数中的问题。应使用三个参数对其进行定义:

  • 错误
  • 回应
  • 身体
所以正确的代码是:

request.post({
 url: 'https://database.mybluemix.net/verifycredentials',
 headers: {
   'Content-Type': 'application/json'
 },
 body: data,
 json: true
}, function(err, res, body) {
  // TODO: process possible errors
  // if (err) { ...
  verifycreds(body);  
});


什么是
请求
请求的签名是什么。post
?这种情况有时会发生在我身上,当你看到你的代码是绝对正确的,但输出与预期不一样时,我的问题是“你怎么知道回调函数以前运行过?”?长时间以来,我在我的verifycreds中保留了一个控制台,我可以看到数据是null@thelonglqd它现在正在工作。我的坏消息,在这里提问之前仔细检查一下,因为在这里提问比反复检查你/我自己的代码(lol)更耗时、更分散注意力。什么是
请求
请求的签名是什么。post
?这种情况有时会发生在我身上,当你看到你的代码是绝对正确的,但输出与预期不一样时,我的问题是“你怎么知道回调函数以前运行过?”?长时间以来,我在我的verifycreds中保留了一个控制台,我可以看到数据是null@thelonglqd它现在正在工作。我的坏消息,在这里提问之前进行彻底检查,因为在这里提问比重复检查您/我自己的代码(lol)更耗时、更分散注意力。为什么这会导致报告的症状?“我现在面临的问题是,甚至在我从rest调用中得到响应之前,函数就被调用了……”作者提到,回调调用时使用
null
,这是因为它不在响应中,而是在自己的参数@T.J.Crowder中,我的直觉是这不是真的,但假设是因为回调接收空值。@alexmac仍然遇到同样的问题..verifycreds函数得到空值响应不是这里的问题..我得到了..但是verifycreds得到了空值..我可能需要使用某种回调为什么会导致报告的症状?“我现在面临的问题是,甚至在我从rest调用中得到响应之前,函数就被调用了……”作者提到,回调调用时使用
null
,这是因为它不在响应中,而是在自己的参数@T.J.Crowder中,我的直觉是这不是真的,但假设是因为回调接收空值。@alexmac仍然收到相同的问题..verifycreds函数得到空值响应不是这里的问题..我得到了..但是verifycreds得到了空值..我可能需要使用某种回调