2016-01-27 30 views
0

解決this issue之後,我現在有一個新的問題,在等待套接字連接的函數內部進行角度暫停。angularjs不使用角度套接字執行延期承諾

控制器:

.controller('myCtrl',function($scope, socket) { 

    var sendMsg = function(msg) { 
    socket.then(function(msg) { 
     socket.emit('newMsg', msg); 
    }); 
    } 

    //simplified example 
    var msg = 'Hi Mom!'; 
    sendMsg(msg); 

}); 

的問題是,socket.emit()永遠不會被解僱。如果我刪除socket.then(),我將收到錯誤socket.emit is not a function。我們必須等待套接字初始化(這是基於在另一個控制器中成功登錄並通過socket工廠廣播)。這是雞雞蛋悖論嗎?如何在另一個函數中觸發socket.emit?其他類似功能的工作,如:

socket.then(function(socket) { 
socket.on('connect',function() { 
    //do something. This works. 
}); 
}); 

回答

1

這個問題似乎是你有兩個msg參數。但是,第二個是插座:

var sendMsg = function(msg) { 
    socket.then(function(socket) { // <-- 
     socket.emit('newMsg', msg); 
    }); 
} 
+0

感謝這實際上是我必須註銷並重新初始化套接字時重新初始化我更改代碼時。然後該功能正常工作。 – lilbiscuit