angularjs 没有使用 angular-socket-io 执行延迟承诺
angularjs not executing deferred promise using angular-socket-io
解决 后,我现在遇到一个新问题 angular 在等待套接字连接的函数内暂停。
控制器:
.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.
});
});
问题似乎是您有两个 msg
参数。然而,第二个是套接字:
var sendMsg = function(msg) {
socket.then(function(socket) { // <--
socket.emit('newMsg', msg);
});
}
解决
控制器:
.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.
});
});
问题似乎是您有两个 msg
参数。然而,第二个是套接字:
var sendMsg = function(msg) {
socket.then(function(socket) { // <--
socket.emit('newMsg', msg);
});
}