2017-02-10 31 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

相关问题