AngularJs和SocketIo

时间:2015-10-07 09:03:52

标签: javascript angularjs socket.io

我需要一些帮助来理解下面的代码。它来自: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);
          }
        });
      })
    }
  };

我有理解问题:

  1. arguments来自哪里
  2. 什么是callback.apply以及它在做什么?

1 个答案:

答案 0 :(得分:1)

这是基本的JavaScript,与AngularJS或Socket.io无关。

arguments是一个“魔术”变量,可以在每个函数中以类似数组的方式访问它的参数。

Function#apply是一种调用具有不同this上下文的函数的方法,提供arguments作为第二个参数。