Создаю несколько $.Deffered объектов. Каждый должен отслеживать выполнение запроса через функцию, которая в свою очередь делает запрос через один глобальный WebSocket. Когда срабатывает событие WebSocket.onmessage вызывается указанная в параметров функции функцию обратного вызова. Функцию обратного вызова должна переводить состояние каждого Deffered в resolve. Но почему-то это срабатывает только для последнего созданного Deffered. Почему так происходит?
var promise = signPromise(dataString);
promise.then(function () { console.log(1); }, function () { console.log(2); }, function () { console.log(3); });
var promise2 = signPromise(dataString2);
//в resolve перейдет только этот
promise2.then(function (Sign, Value) { console.log(1); }, function () { console.log(2); }, function () { console.log(3); });
function signPromise(dataString) {
return $.Deferred(function (obj) {
var self = this;
var mycallback = function () {
self.resolve(1, 2);
}
requestFromSocket(dataString, false, mycallback);
}).promise();
}
...
var webSocket = new WebSocket('wss://...');
var callback = null;
webSocket.onmessage = function (event) {
callback();
};
function requestFromSocket(data, attached, callBack) {
callback = callBack;
webSocket.send("...");
}