此代码的目的是:
问题是:我第一次运行搜索时,它运行得很好。第二次我运行搜索时,它会在web前端发出相同的数据两次。第三次,四次。诸若此类。
我“认为”问题在于:
//Thus begins the loop
ebay.ebayApiGetRequest({
serviceName: 'FindingService',
opType: 'findItemsByKeywords',
appId: ,
params: params,
filters: filters,
parser: ebay.parseItemsFromResponse
},
// gets all the items together in a merged array
function itemsCallback(error, items) {
if (error) throw error;
console.log('Found', items.length, 'items');
for (var i = 0; i < items.length; i++) {
console.log('- ' + items[i].title);
io.emit('incomingdata', '- ' + items[i].title );
}
console.log('Inside ebayApiGetRequest: ', ++iteration), io.emit('incomingdata', 'Inside ebayApiGetRequest: ' + iteration)
}
); 我的输出
外部ebayApiGetRequest: 1
搜索数据是:发送
发现2个项目
完整代码如下。
nodejs服务器:
var request = require('request');
var app = require('express')();
var http = require('http').Server(app);
var io = require('socket.io')(http);
var ebay = require('ebay-api');
//This defines what main page to load
app.get('/', function(req, res){
res.sendfile('engine.html');
});
// Simply lets us know when users connect and disconnect
io.on('connection', function(socket){
console.log('a user connected');
socket.on('disconnect', function(){
console.log('user disconnected');
});
//When data comes in do the following
socket.on('incomingdata', function(msg){
//Check to make sure msn is not null
if (msg != ''){
// example simple request to FindingService:findItemsByKeywords
var params = {};
params.keywords = [ msg ];
// add additional fields
params.outputSelector = [ 'AspectHistogram' ];
params['paginationInput.entriesPerPage'] = 10;
var filters = {};
filters.itemFilter = [
new ebay.ItemFilter("FreeShippingOnly", true)
];
filters.domainFilter = [
new ebay.ItemFilter("domainName", "Digital_Cameras")
];
ebay.ebayApiGetRequest({
serviceName: 'FindingService',
opType: 'findItemsByKeywords',
appId: 'Removed for security', // FILL IN YOUR OWN APP KEY, GET ONE HERE: https://publisher.ebaypartnernetwork.com/PublisherToolsAPI
params: params,
filters: filters,
parser: ebay.parseItemsFromResponse // (default)
},
// gets all the items together in a merged array
function itemsCallback(error, items) {
if (error) throw error;
console.log('Found', items.length, 'items');
for (var i = 0; i < items.length; i++) {
console.log('- ' + items[i].title);
io.emit('incomingdata', '- ' + items[i].title );
}
itemsCallback = [];
});
//put the data back to the client and console
console.log('Search data was: ', msg);
io.emit('incomingdata', msg);
//This ends the process and outputs error message if the data was not entered
} else {
console.log ('No data entered');
io.emit('incomingdata','No data entered');
};
});
});
http.listen(3000, function(){
console.log('listening on *:3000');
});这是前端
<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" type="text/css" href="style.css">
<title>The interface heading</title>
</head>
<!-- Update this junk with CSS tags -->
<body>
<div id="container" style="width:1000px">
<div id="header" style="background-color:#DCDCDC;">
<ul id="messages"></ul>
<form action="">
<input id="m" autocomplete="off" />
<input id="x" autocomplete="off" />
<button>Send</button>
</form>
</div>
<div id="menu" class= "scroll" style="background-color:white;height:400px;width:700px;float:left;overflow-x:hidden;overflow-y:auto;">
<p id="sample"></p>
</div>
<div id="content" style="background-color:#CCCCCC;height:400px;width:300px;float:left;">
Scrolling list
</div>
<div id="footer" style="background-color:#DCDCDC;clear:both;text-align:center;">
Statistics
</div>
</div>
<script src="/socket.io/socket.io.js"></script>
<script src="http://code.jquery.com/jquery-1.11.1.js"></script>
<script>
var socket = io();
$('form').submit(function(){
socket.emit('incomingdata', $('#m').val());
// socket.emit('test', $('#m').val());
$('#m').val('');
return false;
});
socket.on('incomingdata', function(msg){
$('#sample').append($('<li>').text(msg));
var menu_height = $('#menu').outerHeight();
$('#menu').scrollTop($('#sample').outerHeight());
// document.getElementById("results").innerHTML = html.join("");
});
</script>
</body>
</html>发布于 2014-08-25 14:06:39
我终于放弃了,给作者发了电子邮件。他向我介绍了最近的捐款。问题在易趣API客户端。2013年10月7日,sgri在题为“将事件处理程序的范围缩小为单个”的文章中解决了这一问题。
https://github.com/benbuckman/nodejs-ebay-api/commit/af83866596a8aa51e8d74594d07a3156c1766249
https://stackoverflow.com/questions/25456145
复制相似问题