我想在添加事件监听器后立即发出GET
请求,如下所示。
socket.on('event_of_my_api', function(data){
console.log('my api is working');
})
.then(
$http.get('path/to/my/api')
);
应该在我的API中调用event_of_my_api
:
### in my api ###
socket.emit('event_of_my_api', data);
请帮我弄清楚如何做到这一点。我希望延迟承诺是解决方案。
答案 0 :(得分:0)
我不清楚你的问题究竟是什么意思,因为你在标题和第一句中有相互矛盾的词(表明问题的方向不同),但这里有两种可能的解释/答案。
假设$http
表示AngularJS,那么如果你想在套接字上收到'event_of_my_api'
事件后立即进行GET,那么你可以这样做:
socket.on('event_of_my_api', function(data){
console.log('my api is working');
$http.get('path/to/my/api').success(...);
});
如果您想在为'event_of_my_api'事件设置事件处理程序后立即执行GET而不等待实际接收该事件,则可以执行以下操作:
socket.on('event_of_my_api', function(data){
console.log('my api is working');
});
$http.get('path/to/my/api').success(...);
如果这些都不是理想的方向,那么请进一步澄清问题,确切地知道你想要的时间。
使用promises似乎有几个问题。首先,socket.on()
不返回承诺,其次承诺是一次性操作,因此使用单一承诺不适用于可能重复发生的事件(承诺只会改变状态一次,然后是锁定在那个状态)。