2016-11-25 47 views
0

我正在使用nodejs创建REST apis,并希望将来自多个promise的已解析数据存储到单个变量中。无法将promise的解析数据存储在nodejs中的变量中

示例代码:

var resultset={}; 

function getAllTeams() 
{ 
    return M.savelatlong(data) 
      .then(function(result){ return M.getTeam(id); }) 
      .then(function(teams){ return teams;}) 
      .catch(function(error){res.json({status:'success',type:false,msg:error.code});}); 
} 



getAllTeams().then(function(result){ 
    console.log(result); // This prints data 
    resultset.data=result; 
}); 

console.log(resultset); // Always empty 
res.json({status:'success',type:true,data:resultset}); 

但我的结果集变量始终是empty.Am我在正确的方式做,或是否有任何其他的方式来做到这一点。

我想一个解决方案,在发送响应与随后工作这么声明是否意味着我必须总是那么报表内发送响应

getAllTeams().then(function(result){ 
    res.json({status:'success',type:true,data:result}); 
}); 

回答

0

你需要把这个

console.log(resultset); // Always empty res.json({status:'success',type:true,data:resultset});

里面

getAllTeams().then(function(result){ console.log(result); // This prints data resultset.data=result; });

您的回复在承诺解决之前发送。这是问题。

希望这会有所帮助。

+0

是的,这就是为什么我编辑了我的问题。但这是唯一的方法吗? – Vibhas

+0

有很多方法。但在你的代码是的。阅读类似的问题。这将帮助您了解异步操作的工作方式。 –