如何使 NodeJS 中的 request 调用同步?

2024-03-25

我的 Nodejs 应用程序中有一个名为 get_source_at 的函数。它接受 uri 作为参数,其目的是从该 uri 返回源代码。我的问题是我不知道如何使函数同步调用请求,而不是给它那个回调函数。我want控制流停止加载 uri 所需的几秒钟。我怎样才能实现这个目标?

function get_source_at(uri){
    var source;
    request({ uri:uri}, function (error, response, body) {
        console.log(body);
    });
    return source;
}

另外,我已经阅读了有关“事件”以及节点如何“事件化”的内容,我在编写代码时应该尊重这一点。我很高兴这样做,但我必须有一种方法来确保在继续我的应用程序的控制流之前我拥有来自 uri 的源代码 - 所以如果这不是通过使函数同步,那么如何才能完成?


你可以与deasync https://github.com/abbr/deasync:

function get_source_at(uri){
    var source;
    request({ uri:uri}, function (error, response, body) {
        source = body;
        console.log(body);
    });
    while(source === undefined) {
      require('deasync').runLoopOnce();
    }
    return source;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使 NodeJS 中的 request 调用同步? 的相关文章

随机推荐

  • 加载后隐藏微调器

    我想在加载页面后隐藏微调器 我尝试过这个 document ready function loader hide Hide it initially ajaxStart function this show ajaxStop functio
  • 如何将 IsActiveAsync 失败信息传递给用户和客户端?

    In my IdentityServer4我实施的项目IProfileService The IsActiveAsync使用隐式和混合流时 在人类用户通过登录网页成功进行身份验证后 会多次调用该方法 我注意到它被调用时context Cal
  • 结构归纳终止

    我无法让 Agda 的终止检查器接受使用结构归纳定义的函数 我认为 我创建了以下最简单的示例来展示此问题 以下定义size被拒绝 即使它总是在严格较小的组件上递归 module Tree where open import Data Nat
  • DB 或 XML 问题

    XML 似乎是另一种以更小规模存储信息的方式 而DB可以处理所有类型 我有兴趣了解每种方法的优点和缺点 在某个场景中 其中一个更好吗 我确信每个人都有最好的情况 先感谢您 嗯 XML 是任何人都可以读取的文件 因为它是文本 数据库必须通过
  • MFC 控件上的文本 - Unicode 字符(例如日语)被截断

    背景 我正在开发一个 C MFC 应用程序 我们已经将其转换为显示 unicode 字符以支持外语 在大多数情况下 这是成功的并且 unicode 字符显示正确 但我遇到了一个问题 某些控件上的某些文本被截断 Example 在这里 您可以
  • 使用linqpad作为主要查询工具

    我团队的一名成员最近转而使用 LinqPad 作为他的主要查询工具 有时仍然会使用 SQL Studio 其简单目的是迫使自己使用 LINQ 变得更自然 我认为这是一个非常好的主意 并正在考虑要求我的团队的其他成员进行此转换 有人对采取这种
  • 以编程方式唤醒 OSX 上的显示

    我已经设法让显示器立即进入睡眠状态 pmset displaysleepnow 在终端中 但是为了唤醒显示屏 我只找到了 pmset schedule wake 12 24 2009 00 00 00 如果我尝试将任何事情安排得早于从现在起
  • 在我的 c++ 项目中,在 Windows 上使用 libcurl 和 Visual Studio 不起作用,因为字符串已损坏

    正如标题中所解释的 我尝试使用 libcurl C API 提交简单的 http 查询 我使用 Windows 作为操作系统 C 作为语言 Visual Studio 2008 作为 IDE 我的代码非常简单 我初始化卷曲 CURLcode
  • Linq To SQL 指定的强制转换对于 Union 无效错误

    我有以下代码 它在 NET 4 0 中针对 SQL Server 2008 R2 服务器使用 Linq to SQL public void Patients var documents GetEMRDocumentsByPatientId
  • 乐观锁绝对安全吗?

    当使用乐观锁定策略时 可以解决如下并发问题 the first transaction started select a row the second transaction started update the row with vers
  • 如何订阅在不同 JVM 上运行的反应式流实现?

    假设我们有两个 Akka Stream 流 每个流都在自己的 JVM 上运行 A reactive streams publisher running on JVM 1 val stringPublisher Publisher Strin
  • 使用 xslt 样式表将 xhtml 空行转换为 XSL-FO 空行

    我正在使用 XSLT 样式表 由 Antennahouse 提供 将 XHTML 转换为 XSL FO 文件 我在 XHTML 文件中将一个空行定义为 2 个连续的 HTML BR 标记 现在 XSL FO 格式不提供对空行的本机支持 我想
  • 如何将多行字符串转换为数组,其中每个元素都是所述字符串的一行? [复制]

    这个问题在这里已经有答案了 可以说我有 string str Line 1 Line 2 Line 3 我怎样才能把它变成一个数组 其中 3 个元素是 第 1 行 第 2 行 和 第 3 行 使用此选项 RemoveEmptyEntries
  • D365 FO 到期合同简单查询

    我需要创建简单的查询 该查询将显示将在未来 3 个月内到期的所有合同 我知道如何使用 SQL 执行此操作 但在创建查询时如何在 Visual Studio 中执行此操作 我添加了数据源合同表 添加了范围 过期日期所在的列是 VALIDTO
  • Spring Transaction - 代理混淆

  • SwiftUI - 如何在 macOS 上隐藏窗口标题

    在具有新 SwiftUI 框架的 macOS 上 无需AppDelegate SceneDelegate 如何隐藏窗口标题 我发现 Apple 的这篇文章描述了如何为 Catalyst 应用程序执行此操作 但现在没有该委托 我该如何实现此目
  • 将 int 附加到 std::string

    我尝试了两种不同的方法来附加int to a std string 令我惊讶的是 我得到了不同的结果 include
  • Snakemake 输入函数异常。 AttributeError:“通配符”对象没有属性

    我有一个带有 ChIP seq 单端 fastq 文件名的列表对象allfiles path file1 fastq path file2 fastq path file3 fastq 我正在尝试设置该对象 allfiles 作为通配符 我
  • 如何以附加模式写入文本文件

    我的应用程序基于导航 UItextView 用于注释 UIViewController 我正在将文本数据写入文件 现在我需要在附加模式下编写 我正在尝试以下代码 但每次都使用相同的文本数据写入两次 并且不附加下一个文本数据到文件 void
  • 如何使 NodeJS 中的 request 调用同步?

    我的 Nodejs 应用程序中有一个名为 get source at 的函数 它接受 uri 作为参数 其目的是从该 uri 返回源代码 我的问题是我不知道如何使函数同步调用请求 而不是给它那个回调函数 我want控制流停止加载 uri 所