JavaScript、node.js 在继续之前等待 socket.on 响应

2024-02-01

我需要从客户端的服务器获取信息。 所以在服务器端,当客户端第一次连接时我得到了这个:

socket.on('adduser', function(username){
    // misc code, where i set num_player and whatnot
    socket.emit('confirmauth', socket.id, socket.num_player, function(data){
         console.log(data)
    });
    // code
}

在客户端我得到了这个:

var current_player;
socket.on('confirmauth', function(id, username, num, callback) {

    current_player = new Player(username,id, num);

    console.log(current_player.id); // works
    console.log(current_player.num); //works
    callback('ok i got it');
});

console.log(current_player.id); //undefined
console.log(current_player.num); //undefined

我的问题是在套接字之外,播放器未定义。看来javascript在继续之前不会等待我的套接字打开来检索数据。

我尝试将 socket.on 包装在 $.when 完成时,但它不起作用。我尝试进行回调,但我想我可能不太明白它应该如何工作。因此,如果你们中有人愿意帮助我,我将不胜感激

谢谢您的回答。


如果你把current_player外部变量on回调试图return它,另一种方法是让你自己的函数接收回调

function getPlayer(onDone){
    socket.on('confirmauth', function(id, username, num, callback) {
        var current_player = new Player(username,id, num);
        onDone(current_player);
    });
}

而不是做

var player = getPlayer();
//...

You do

getPlayer(function(player){ 
    //...
});

有点糟糕的是,“回调性”在 Javascript 中有点具有传染性,但这就是生活,直到每个人都开始使用生成器。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JavaScript、node.js 在继续之前等待 socket.on 响应 的相关文章

随机推荐

  • 这是什么意思: qq = qq || {}? [复制]

    这个问题在这里已经有答案了 我已经下载了一个 JavaScript 脚本 第一行是 qq qq 这是什么意思 它检查qq对于预先存在的真实值 http 11heavens com falsy and truthy in javascript
  • 安装私有 Go 模块:未知修订错误

    我有一个私人 Go 存储库 位于https github com myorg myrepo被另一个 Go 存储库使用并定义在go mod 当我尝试跑步时 go mod tidy下载所有依赖项 它返回以下错误 go github com my
  • 处理400后运行时错误

    设想 用户名和密码使用 WebApi 2 令牌身份验证进行身份验证 如果凭据正确 则返回令牌 但是 如果凭据不正确 则会返回 400 bad request 在我的 Ionic 2 项目中 如果收到响应 我会导航到下一页 如果收到错误 我会
  • Java中使用Selenium快速获取每个WebElement的类属性

    我正在寻找每个的类属性WebElement用硒快速在页面上 目前 我正在执行以下操作 allElements new ArrayList
  • 当 setLabelsClipped 为 true 时,顶点标签在顶点外部、滚动条上和其他组件上绘制

    我使用 JGraph 一段时间了 当您将标签裁剪设置为 true 时 似乎存在绘画问题 下面的简化示例显示了您可能会遇到的实际应用程序中的问题 import java awt BorderLayout import java awt Dim
  • 在 MATLAB 中处理大型 CSV 文件

    我必须处理一个最大 2GB 的大 CSV 文件 更具体地说 我必须将所有这些数据上传到 mySQL 数据库 但在我必须对此进行一些计算之前 所以我需要在 MATLAB 中完成所有这些操作 我的主管也想在 MATLAB 中完成 因为他熟悉MA
  • 将嵌套 XML 数据与数据库表结构进行匹配的最快方法

    我有一个创建的应用程序datarequests这可能相当复杂 这些需要作为表存储在数据库中 一个轮廓datarequest 作为 XML 将是
  • 无法解析 MatDialogRef 角度 4 的所有参数

    我正在研究 Angular 4 我正在尝试设置材质包 在这里我尝试尝试对话框 但它不起作用 可能是因为我不确定材质包 这是我的 dialog components ts import Component OnInit from angula
  • NET::ERR_CERT_COMMON_NAME_INVALID - 错误消息

    前段时间我用 Flask 建立了一个网站 现在突然间 当我尝试导航到那里时 我得到以下信息 NET ERR CERT COMMON NAME INVALID 你的连接不是私人的 攻击者可能试图从 www mysite org 窃取您的信息
  • __cdecl 调用约定不适用于 msvc x64

    只是一个测试 cdecl调用约定 这是一个 cmake 项目 只有 1 个源文件 include
  • 极其奇怪的 IE7/8 边框/不透明度兼容性问题

    奇怪的问题是 当在 IE 8 9 中应用不透明度时 边框会消失 但在 7 中不会 我基本上在屏幕顶部有一个带有选项卡的菜单 IE table tr td class tab button 1 lt td gt td class tab bu
  • 如何将 EF 类型名称传递到方法参数中?

    我正在使用 MVC3 EF4 1 和 C 我正在尝试使用通用方法来更新存在于众多实体类型中的属性 因此 我需要将类型作为参数传递到方法中 请问我该怎么做 一些代码 public Boolean CompleteTask PRV myCurr
  • jQuery AJAX 调用中是否有类似于“finally”的情况?

    jQuery AJAX 调用中是否有 Java 最终 类似物 我这里有这个代码 在我的always我抛出一个异常 但我总是希望它去then method call xmlHttpReq ajax url url dataType json
  • 如何在 Sublime Text 4(Windows)中显示菜单栏

    我更新了我的 sublime 文本 之后我似乎看不到屏幕顶部的菜单栏 但现在必须单击 3 行按钮才能查看它 有什么方法可以让菜单栏再次像平常一样显示吗 我尝试 查看 并启用它 但找不到任何 菜单栏设置 我认为显示汉堡菜单是您当前主题的一个特
  • PyCharm 调试器因 AttributeError 失败

    我无法在 PyCharm 中调试 Flask 应用程序 该应用程序应在端口 5000 上运行 app run host 10 1 0 17 port 5000 debug True 控制台输出为 C Python python exe C
  • 创建线程时有多少开销?

    我刚刚回顾了一些非常糟糕的代码 通过创建一个新线程来在串行端口上发送消息的代码 以便为发送的每条消息在新线程中打包和组装消息 是的 对于每条消息 都会创建一个 pthread 正确设置位 然后线程终止 我不知道为什么有人会做这样的事情 但它
  • Kotlin 协程选择调度程序

    我正在尝试找出在什么情况下使用哪个调度程序 我阅读了一些文档并提出了这个 默认 CPU工作 主要 主要 更新UI 无拘无束 IO 写文件 网络任务 这是正确的吗 那么无拘无束呢 您对调度程序类型的假设是正确的 无限制调度员 不局限于任何特定
  • 将视图模型绑定到淘汰赛中属性的存在

    我正在使用 Knockout js 填充一组 HTML5
  • Django:多个帐户,每个帐户下有多个用户,但特定于帐户的数据

    这里使用 Django 1 5 我创建了一个应用程序 当前拥有一大组数据 如果您愿意的话 可以用于一个 帐户 这意味着我的应用程序中所有模型中的所有数据都可供所有登录用户使用 现在 我希望能够让更多的人使用我的应用程序 但使用他们自己的数据
  • JavaScript、node.js 在继续之前等待 socket.on 响应

    我需要从客户端的服务器获取信息 所以在服务器端 当客户端第一次连接时我得到了这个 socket on adduser function username misc code where i set num player and whatno