2017-07-09 127 views
0

我是Nodejs和javascript的新手,並且在nodejs api代碼上工作。我正在使用GandiAPI來檢查domainAvaliablity(與項目相關的需求)並創建了一個像這樣的get請求方法(checkDomainAvaliablity)。從回調函數獲取值並設置爲父函數

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

而我有一個回調函數有2個參數(我不能改變)。 我能夠在我的回調函數中成功獲取值。 現在我想從回調中返回「值」,並希望設置checkDomainAvaliablity函數(父函數)的「res」參數表(類似於res.json(任務))。

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). 
} 

注意:使用callbackfuncion是必要的。

+0

你能解釋給你結果存儲在'res',當res'過去了,進行了'外部函數作爲參數已經完成其執行的時候它是如何有用回調被調用?爲什麼不使用新變量? – trincot

+0

我需要返回get方法中的某些內容作爲json格式的結果。 –

+0

你不能從get方法返回一些東西,因爲它已經在調用回調的時候返回。也許你可以通過閱讀異步回調函數來得到一些解釋。另請參閱:http://stackoverflow.com/questions/14220321/how-do-i-return-the-response-from-an-asynchronous-call – trincot

回答

0

謝謝@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) 
 
    
 
};