当前位置: 首页 > 知识库问答 >
问题:

下面这句话是什么意思?文档?

苏宜人
2023-03-14

从播放文档

无论操作代码返回Result还是Promise,两种返回的对象都以相同的方式在内部处理。有一种Action是异步的,而不是两种(同步和异步)。返回Promise是一种编写非阻塞代码的技术。

这是否意味着在返回promise时没有区别/优点或缺点


共有1个答案

柯凯旋
2023-03-14

不,显式返回< code >promise是没有意义的

但是,有时您的代码会调用返回Promise的其他代码,因为它执行非阻塞异步操作。在这种情况下,您应该转换Promise以从中提取您需要的信息,然后返回它。通过将其保留为Promise而不是展开它-您不会强制线程阻塞并节省上下文切换的开销,这可能很重要。

例如,假设您要查询Web服务:

WSRequestHolder holder = WS.url("someUrl");
Promise<JsonNode> json = holder.get();

现在,您可以执行以下操作:

JsonNode jsonResult = json.get(); // force the program to wait
return jsonResult; // return it

但这将迫使线程在阻塞io操作中进行上下文切换。相反,您可以直接返回一个promise:

return json; // return the promise

为了节省上下文切换的开销,如果需要先操作它,也可以使用 .map

 类似资料:
  • 问题内容: 我是Go的新手,在浏览其他一些线程时遇到了以下代码行: 含义是什么?它是否指定将在if条件中分配某些内容(因为err似乎正在发生这种情况)?我在Wiki上找不到这种语法的示例,并且我很好奇它的用途。 问题答案: 因为返回两个值,所以如果需要它们中的任何一个,都必须在某个地方接收这些值。该是一个占位符,基本的意思是“我不关心这个特殊的返回值。” 在这里,我们只关心检查错误,而无需对实际的

  • 问题内容: 我看到从这个例子上: 并且似乎无法找到import语句前面的下划线是什么意思。 问题答案: 简短答案: 它仅出于副作用导入软件包。 从执行规范: 要仅出于副作用(初始化)导入软件包,请使用空白标识符作为显式软件包名称: 导入_“ lib / math” 在sqlite3 对于go-sqlite3,下划线导入用于将驱动程序注册为该函数中的数据库驱动程序的副作用,而无需导入任何其他函数:

  • 问题内容: 这个头衔看起来并不那么疯狂。我承诺!! 在研究另一个问题时,我在Stack Overflow的样式表中注意到以下内容: 这是一种奇怪的条件样式吗?这是一个错误吗?假设这不是一个错误,那么它适用于所有IE版本吗?有没有一种方法可以指定给定规则仅适用于大于(例如7)的IE版本? 我以前从未遇到过-我一直在使用条件注释来表示IE特定的样式(以及其价值,我宁愿将所有IE特定样式完全分开)。 问

  • 所以我有这行代码。它给了我输出[6,28]。你们知道为什么吗?我不知道有人想打印什么样的数字。

  • 我运行了几个测试场景,其中我从SOAP客户端调用远程系统的SOA服务,并遇到了各种远程异常。你能帮我确定每个错误意味着什么吗- 1) java.net网站。ConnectException:连接被拒绝“ 2)Java . net . socket time out异常:连接超时" 3) 连接异常: 连接超时”

  • 问题内容: 我试图从E3roid示例运行示例。除了我什么时候,我都会在页面上强行关闭。这是logcat错误。通过查看它,您能否告诉我这意味着什么,什么问题? 问题答案: 您是否已将AndroidActivity添加到AndroidManifest?