AngularJs 和 SocketIo
AngularJs and SocketIo
我需要一些帮助来理解下面的代码。摘自:http://www.html5rocks.com/en/tutorials/frameworks/angular-websockets
app.factory('socket', function ($rootScope) {
var socket = io.connect();
return {
on: function (eventName, callback) {
socket.on(eventName, function () {
var args = arguments;
$rootScope.$apply(function () {
callback.apply(socket, args);
});
});
},
emit: function (eventName, data, callback) {
socket.emit(eventName, data, function () {
var args = arguments;
$rootScope.$apply(function () {
if (callback) {
callback.apply(socket, args);
}
});
})
}
};
我理解有问题:
arguments
从哪里来
- 什么是 callback.apply,它在做什么?
基本JavaScript,与AngularJS或Socket.io无关。
arguments
是一个 "magic" 变量,可以在每个函数中使用,以类似数组的方式访问它的参数。
Function#apply
是一种调用具有不同 this
上下文的函数的方法,提供 arguments
作为第二个参数。
我需要一些帮助来理解下面的代码。摘自:http://www.html5rocks.com/en/tutorials/frameworks/angular-websockets
app.factory('socket', function ($rootScope) {
var socket = io.connect();
return {
on: function (eventName, callback) {
socket.on(eventName, function () {
var args = arguments;
$rootScope.$apply(function () {
callback.apply(socket, args);
});
});
},
emit: function (eventName, data, callback) {
socket.emit(eventName, data, function () {
var args = arguments;
$rootScope.$apply(function () {
if (callback) {
callback.apply(socket, args);
}
});
})
}
};
我理解有问题:
arguments
从哪里来- 什么是 callback.apply,它在做什么?
基本JavaScript,与AngularJS或Socket.io无关。
arguments
是一个 "magic" 变量,可以在每个函数中使用,以类似数组的方式访问它的参数。
Function#apply
是一种调用具有不同 this
上下文的函数的方法,提供 arguments
作为第二个参数。