perl6如何获取promise的具体身份?

2023-12-23

我正在尝试编写在 Promise 中运行的 3 个 echo 服务器的代码,但我想知道哪个 Promise 正在执行回显。有没有办法做到这一点?

no strict;

for 0 .. 2 -> $index {
    @result[$index] = start {
        $myID = $index; 
        say "======> $myID\n";

        my $rsSocket = IO::Socket::INET.new:
            localhost => 'localhost',
            localport => 1234 + $index,
            listen    => 1;

        while $rsSocket.accept -> $rsConnection {
            say "Promise $myID accepted connection";
            while $rsConnection.recv -> $stuff {
                say "promise $myID Echoing $stuff";
                $rsConnection.print($stuff);
            }
            $rsConnection.close;
        }
    }
}

await @result;

echo 服务器运行正常;用“nc”进行测试;

问题是$myID变成2创建 Promise 后,我无法判断哪个 Promise 正在执行当前的回显。看起来$myID被所有的promise使用;有没有办法创建特定于个人承诺的变量?


这是你“失去”的事情之一no strict.

您需要的是词法范围。使用my每次块都会给你一个不同的变量({ ... })被输入。

如果你这样做:

for 0 .. 2 -> $index {
    @result[$index] = start {
        my $myID = $index; 

Then $myID将是本地的start块,每次调用该块时,它都会记住它的 id。因此,每当套接字接收数据时,您都会获得正确的 ID。

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

perl6如何获取promise的具体身份? 的相关文章

  • 可以或应该同时运行的 Promise 数量是否有限制?

    令人惊讶的是 谷歌无法返回这个问题的结果 我想知道在排队并等待下一个完成之前可以或应该并行运行多少个承诺 我想这可能取决于用户的互联网 但我认为值得一问 如果它基于用户的 ISP 连接类型 是否有办法在启动队列之前测试发送的理想承诺数量 另
  • 处理获取响应的正确方法是什么

    我有以下用于处理 Magento 2 REST API 的代码 return new Promise resolve reject gt fetch uri method headers body JSON stringify data t
  • 使用承诺 - 在失败处理程序中记录堆栈跟踪

    我对 Nodejs 相当陌生 所以我将更详细地解释我想要做什么 我有一个网络服务器 如果请求失败 我想记录该异常的堆栈跟踪 但提供错误页面而不是使服务器崩溃 例如 处理请求的函数 var Q require q var requestHan
  • Ruby 中按身份分组

    鲁比的怎么样group by http ruby doc org core 2 2 3 Enumerable html method i group by方法按标识对数组进行分组 或者更确切地说self 其元素 a abccac chars
  • Angular 自定义错误处理程序未从 Promise 获取错误类型

    当从承诺中抛出每个错误时 我的自定义错误处理程序都会丢失其类型 import HttpErrorResponse from angular common http import ErrorHandler Injectable Injecto
  • 你怎么知道无限长的承诺链何时完全结束?

    我试图使用 Promise 强制序列化一系列 Ajax 调用 用户每次按下按钮时都会进行这些 Ajax 调用 我可以成功地序列化操作 如下所示 sample async function real world this is an Ajax
  • 对模块进行单元测试时如何模拟导入的子例程

    考虑一个导出连接到互联网并返回结果的子例程的模块 unit module A sub download is export result from internet Not the actual implementation obvious
  • 直接将函数与匿名函数传递给 then Promise 回调

    我试图理解这三个选项之间的区别 then myCallback then myCallback then gt myCallback The myCallback函数不返回任何内容 仅用于其副作用 因此我不需要它将任何内容传递回承诺链 我不
  • Node.js 原生 Promise.all 是并行处理还是顺序处理?

    我想澄清这一点 因为文档 https developer mozilla org en US docs Web JavaScript Reference Global Objects Promise all对此还不是太清楚 Q1 Is Pr
  • 对 Python 的 id() 感到困惑[重复]

    这个问题在这里已经有答案了 我可以理解以下定义 每个对象都有一个身份 类型和值 对象的身份 一旦创建就永远不会改变 你可能会认为它是 对象在内存中的地址 这is操作员比较身份 两个物体 这id 函数返回一个代表其值的整数 身份 我假设上面的
  • 轮询时承诺异步等待

    我正在尝试将使用承诺 和轮询 的函数转换为异步函数 但我不太确定它是如何工作的 我有这个 function myFunction return new Promise resolve gt stuff here var poll setIn
  • 哈希组合器无用,或者无法修改不可变哈希?

    这段代码 constant what doesn t gt change what will gt change 应该说一些类似于 无法修改不可变哈希 的内容 然而 它说 Potential difficulties Useless use
  • 使用异步/等待返回值意外获取 API [重复]

    这个问题在这里已经有答案了 这是函数 const getUserIP async gt let response await fetch https jsonip com let json await response json conso
  • 使用十进制数有理数是否会影响 Perl 6 的性能

    据我了解 Perl 6 尽可能将小数实现为有理数 以避免大多数其他语言中存在的浮点问题 有人做过基准测试或了解这样做的性能损失吗 使用十进制数有理数是否会影响 Perl 6 的性能 我认为最有用的总体答案是 不 不是真的 但让我详细说明一下
  • Chrome 扩展同步调用 - 仅在窗口关闭后创建窗口

    我有这个代码 function voteNewWindow mailNum chrome windows create url http www google com incognito true function window conso
  • 同步获取已解决 Promise 的值

    如果我们知道一个Promise肯定已经解决了 我们如何访问该值 如果不能 为什么不呢 let a Promise resolve 123 console log a value 以下不起作用 它打印 First Last 123 conso
  • 何时不使用承诺[关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 在阅读了数十篇关于 es6 Promise 有多伟大以及为什么我们应该实现它们的文章之后 我有这样的感觉 ALL我的 不平凡的 JavaScri
  • 为 Promise 编写循环的正确方法。

    如何正确构造循环以确保满足以下条件承诺电话和被束缚的记录器 log res 通过迭代同步运行 蓝鸟 db getUser email then function res logger log res this is a promise 我尝
  • Perl 6 字符将匹配哪些 Unicode 属性?

    The uniprop返回单个属性 put join A uniprop 我取回一项财产 一般类别 Lu 环顾四周 我没有找到一种方法来获取所有其他属性 包括派生属性 例如ID Start等等 我缺少什么 我知道我可以查看数据文件 但我宁愿
  • 以小并发批量运行 Promise(一次不超过 X)

    Async 库具有类似的功能每个限制 https github com caolan async eachLimit它可用于将大量作业有效地分布在多个 CPU 核心上 如下所示 var numCPUs require os cpus len

随机推荐