2017-02-10 27 views
0

我有一種情況,需要從我的控制器文件夾服務文件夾中的服務功能,並且一旦收到輸出結果,我需要將其傳遞迴UI。在NodeJS中將數據從一個js文件同步傳遞到其他js文件

//controller 
    var service = require('service'); 
    api.get('/users', function(request, response) { 
     var name = request.query['name']; 
     var responseFromService = service.someAPI(name); 
     response.send(responseFromService).status(200); 
    }); 
    //Service 


     exports.callTwitterAPI = function(twitterHandle,callback){ 
    var responseFromTwitterService; 

    console.log("Calling Twitter API.." + twitterHandle); 
    someAPI.get('users/show', {screen_name: twitterHandle}, function (err, data, res) { 
     if (err) { 
      //loggerError.error('No connection to twitter :', Date.now()); 
      responseFromTwitterService = JSON.stringify(err) + "Unable to connect twitter"; 
     } else if (data.errors) { 
      responseFromTwitterService ="User Not Found!!" 
      // loggerInfo.info('No Twitter handle found for :', twitterHandle); 
     } else { 
      console.log("here.."); 
      responseFromTwitterService = data; 
     } 
     console.log('response : '+ responseFromTwitterService); 
     return (null,responseFromTwitterService); 
    }); 
} 

現在,我需要持有的

response.send(responseFromService).status(200); 

這條線,直到我的服務返回響應的執行,我需要使它同步。

感謝提前:)

回答

1

您的服務將或者是自然同步,或本質上是異步的,你如何處理它將由確定。

如果服務調用是同步的,那麼你寫的將會正常工作。如果它是異步的,那麼你只需要發送在其回調的反應,例如:

//controller 
    var service = require('service'); 
    api.get('/users', function(request, response) { 
     var name = request.query['name']; 
     var responseFromService = service.someAPI(name, function(err, responseFromService) { 
      response.send(responseFromService).status(200); 
     }); 
    }); 
    //Service 
    exports.someAPI = function(name, callback){ 
    //some calculations 
    return callback(null, responseFromService); 
    } 

編輯您更新後

您的服務永遠不會打電話給你聲明的回調。請注意您的最後一行:

return (null, responseFromTwitterService); 

實際上並沒有做任何事情。相反,你想:

return callback(null, responseFromTwitterService); 

然後在控制器調用代碼可以作爲我建議寫。

+0

感謝您的回覆。嘗試但它沒有工作:(我得到的響應爲undefined。我們可以直接在js文件中傳遞JSON響應嗎? – Gaurav

+0

請發佈您的服務代碼,然後,請。 – Paul

+0

添加服務代碼。我得到服務響應儘管作爲JSON。 – Gaurav

相關問題