【发布时间】:2015-08-14 22:35:57
【问题描述】:
我需要同时打开多个WebSocket 连接,然后在打开所有连接后执行操作。
我正在使用 RSVP.js 的 defer()、all() 和 then() 方法。但是,then() 和 catch() 都没有被触发,我无法弄清楚我哪里出错了。
这是我的代码:
var numberOfThreads = 6,
openSockets = function () {
var // the deferred object
d,
// array of promises
socketsOpened = [],
// websocket object and index
ws, i;
// open a new WebSocket connection for each iteration
for (i = 0; i < numberOfThreads; i += 1) {
// create deferred object
d = RSVP.defer();
// push promise into array
socketsOpened.push(d.promise);
// create websocket connection to valid, working socket server
ws = new WebSocket(url);
// websocket events
ws.onopen = function () {
// when socket is open, resolve deferred
d.resolve();
};
}
// when all connections are open, do stuff
RSVP
.all(socketsOpened)
.then(function () {
console.log('All sockets are opened!');
}).catch(function () {
console.log('Oops! Something has gone wrong!');
});
};
openSockets();
我做错了什么?
【问题讨论】:
标签: javascript websocket deferred rsvp.js