我有一个Ionic / AngularJS应用程序,它将函数中的事件发送到我的Node服务器,如下所示:
$scope.doKeywordSearch = function (keyword, details) {
var lat = details.geometry.location.lat();
var lng = details.geometry.location.lng();
socket.emit('keywordSearch', {lat: lat, lng: lng, keyword: keyword});
socket.on('searchResults', function (results) {
console.log(results);
});
}
在服务器上,事件的处理方式如下:
io.sockets.on('connection', function(socket) {
socket.on('keywordSearch', function(searchData) {
var searchResults = [];
function(){
//do loads of search stuff here
}
setTimeout(function(){
socket.emit('searchResults', {results: searchResults});
},2000)
})
});
客户端上的searchResults事件的处理方式如下:
socket.on('searchResults', function (results) {
console.log(results);
});
每次调用该函数时,返回的结果与我在Node应用程序运行时调用函数的次数相同,+ 1。因此每次都会递增。
如何阻止这种情况发生,并且每次调用该函数时都返回一次? 我构建Socket.io事件的方式有错误吗?
答案 0 :(得分:0)
每次拨打doKeywordSearch
时,都会通过调用
socket.on('searchResults', function (results) {
console.log(results);
});
确保只在加载应用后调用socket.on('searchResults'...
。