javascript - AngularJs 和 SocketIo

标签 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. 参数从何而来
  2. 什么是callback.apply,它在做什么?

最佳答案

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

arguments是每个函数内部可用的“神奇”变量,以类似数组的方式访问其参数。

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

关于javascript - AngularJs 和 SocketIo,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32988065/

相关文章:

javascript - 是否有可能创建一个独立的 Angularjs 应用程序,它不会与同一页面上的任何其他 Js 或 css 库发生冲突

javascript - 动态 Angular.js 菜单

node.js - 客户端找不到io

无法访问结构 ifreq

javascript - Sencha Touch 2 全局变量 - 随处访问

javascript - 如何修复无法读取 null 的属性 'clientWidth'?

javascript - JQuery:尝试在单击按钮时将数字附加到文本区域

javascript - 用于构造数组的 PHP 等效于 JavaScript 传播语法的是什么?

javascript - 自动完成表单中的必填输入字段

ios - App Transport Security 已阻止明文 HTTP 资源