【问题标题】:Get the value from callback function and set to parent function从回调函数中获取值并设置为父函数
【发布时间】:2017-07-09 18:00:28
【问题描述】:

我是 Nodejs 和 javascript 的新手,并且正在研究 nodejs api 代码。我正在使用GandiAPI 来检查 domainAvaliablity(项目相关要求)并创建了一个像这样的获取请求方法(checkDomainAvaliablity)。

  exports.checkDomainAvaliablity = function (req, res) {
  gandiApi.methodCall('domain.available', [gandiapikey, [domain]], callback)      
  };

我有一个回调函数,它有 2 个参数(我无法更改)。 我能够在我的回调函数中成功获取该值。 现在我想从回调中返回“值”,并想在 checkDomainAvaliablity 函数(父函数)的“res”参数中设置(类似于 res.json(task))。

 var callback = function (error, value) {

   console.dir(value)
   if (value[domain] == 'pending') {
   console.log('result is not yet ready')
   setTimeout(function () {
   gandiApi.methodCall('domain.available', [gandiapikey, [domain]],
   callback)
   }, 700)
   }
   else {
    console.dir(value)
   }


   // I want to return "value" from here and want to set in "res"  paramameter of checkDomainAvaliablity function (Parent function).
 } 

注意:必须使用回调函数。

【问题讨论】:

  • 您能解释一下将结果存储在res 中对您有什么用处吗,当以res 作为参数传递的外部函数在调用回调时已经完成执行?为什么不使用新变量?
  • 我需要从get方法返回一些json格式的结果。
  • 你不能从 get 方法返回一些东西,因为它在回调被调用时已经返回了。也许你可以通过阅读异步回调函数得到一些澄清。另见:stackoverflow.com/questions/14220321/…
  • checkDomainAvaliablity 是我的 get 方法,我想在 res 参数中设置(类似于 res.json(task)

标签: javascript node.js rest express callback


【解决方案1】:

感谢@trincot。将回调函数放在父函数中可以正常工作。

exports.checkDomainAvaliablity = function (req, res) {
  domain = req.params.domainAvaliablity
  var callback = function (error, value) {
    console.log("logging" + value + error)
    if (value[domain] == 'pending') {
      console.log('result is not yet ready')
      setTimeout(function () {
        gandiApi.methodCall('domain.available', [gandiapikey, [domain]],
          callback)
      }, 700)
    }
    else {
      res.send(value);
      console.dir(value)
    }
    
  }

  gandiApi.methodCall('domain.available', [gandiapikey, [domain]], callback)
  
};

【讨论】:

    猜你喜欢
    • 2013-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多