i have loop that subscribes different pubnub channels (dont worry pubnub specifics, problem seems scope/closures). when receive message, want resolve promise.
the problem indicated comments in code below. basically, outside pubnub subscribe, counter i
gives expected value, inside subscribe callback, not. why case? how fix it?
_.times(3, function(i) { console.log('subscribe'+i); // here counter working fine pubnub.subscribe({ channel_group: 'usersu' + (i + 1) + ':1', callback: function(msg) { console.log('recv:', msg, message, msg == message, i); // here not! 0 if (msg == message) { console.log('resolve'); deferreds[i].resolve(); } }, error: function(err) { deferreds[i].reject(err); } }); });
i hoping solved issue.
i modified code run locally on browser. declared new function subscribe (since don't know pub nub subscribe). code works , corresponding "i" value printed.
i think need provide bit more context , environment community debug further.
function subscribe(obj) { console.log(obj.channel_group); obj.callback("hello"); obj.error("error5"); } _.times(3, function(i) { console.log('subscribe' + i); // here counter working fine subscribe({ channel_group: 'usersu' + (i + 1) + ':1', callback: function(msg) { console.log('recv:', msg, "hello", "hello"==msg, i); // here not! 0 if (msg == "hello") { console.log('resolve'); console.log(i); //deferreds[i].resolve(); } }, error: function(err) { console.log(i + ": " + err); //deferreds[i].reject(err); } }); });
<script src="https://github.com/jashkenas/underscore/blob/master/underscore.js"></script>