Javascript 如何在Socket.IO上下文中等待承诺

Javascript 如何在Socket.IO上下文中等待承诺,javascript,node.js,sockets,promise,Javascript,Node.js,Sockets,Promise,我有这个设置 //Client Side socket.emit('some_event'); //Server Side socket.on('some_event', function(data){ socket.emit('another_event', getDataFromAPI()); }); 问题是,我的函数getDataFromAPI()是一个调用,可能需要一些时间,因为它调用外部API并使用承诺。诸如此类: function getDataFro

我有这个设置

//Client Side


 socket.emit('some_event');


//Server Side


 socket.on('some_event', function(data){
      socket.emit('another_event', getDataFromAPI());
 });
问题是,我的函数
getDataFromAPI()
是一个调用,可能需要一些时间,因为它调用外部API并使用承诺。诸如此类:

function getDataFromAPI(){
   myAPI.getStuffFromId('123456789')
   .then(function(data){
         return data;
   });
 }
如果我以这种方式使用它,则socket.IO调用范围中的
getDataFromAPI()
中将没有任何内容,如果我决定打印它,它将
null
发送到客户端并打印
undefined
。如果我将它登录到promise中的控制台,那么我就有了数据,但是现在返回它有点太晚了


由于我将在该API中大量使用promises调用,并且我的大多数客户机/服务器实时通信将通过Socket进行。IO是否有明显的遗漏,或者这只是我不应该使用的模式。

getDataFromAPI
方法返回promise

function getDataFromAPI(){
   return myAPI.getStuffFromId('123456789')
     .then(function(data){
         return data;
     });
}
并在承诺得到解决时发出

io.on('connection', function(socket){
   socket.on('some_event', function(data){
      getDataFromAPI().then(function(apiData){
          socket.emit('another_event', apiData);
      })
   });
});

getDataFromAPI
方法返回承诺

function getDataFromAPI(){
   return myAPI.getStuffFromId('123456789')
     .then(function(data){
         return data;
     });
}
并在承诺得到解决时发出

io.on('connection', function(socket){
   socket.on('some_event', function(data){
      getDataFromAPI().then(function(apiData){
          socket.emit('another_event', apiData);
      })
   });
});

好的,我刚意识到我有一些阅读要做。。。谢谢,很多作品都很有魅力。@phadaphunk你会明白的:)好吧,我刚意识到我有一些阅读要做。。。谢谢,很多东西都很有魅力。@phadaphunk你会找到窍门的:)@JaromandaX会跳过使用它们的API包装,但我有点绑定到使用它们的API包装:(@JaromandaX会跳过使用它们,但我有点绑定到使用它们的API包装:(