Nodejs 异步/等待延迟

2024-01-03

我对这段代码有问题:

var request = require('request-promise');

class Test{

constructor(){

}

async Start(){
    var response = await this.getResponse();
    await console.log(response);
}

async getResponse(){
    var options = {
        uri: "https://www.google.com"
    }

    var response = await request(options);

    setTimeout(function(){
        return response;
    },1000);
}

}

module.exports = Test;

当我运行 Start() 时,控制台记录“未定义”,但这是为什么呢?我知道我在返回时设置了 1 秒延迟,但是代码不应该等到返回吗?因为等待?

P.S:延迟是为了模拟正在处理的响应数据。


您不能将“return”放在另一个函数内部并期望它返回到外部函数。 (最大的问题)

async getResponse(){
    setTimeout(function(){
        return "Test";
    },1000);
    return undefined; // line is basically what is here when you don't return anything
}

await getReponse(); // returns undefined, NOT "Test".

您可以这样编写代码:

  const delay = time => new Promise(res=>setTimeout(res,time));
  class Test{
    constructor(){
    }

    async Start(){
        var response = await this.getResponse();
        console.log(response); // await not needed here.
    }

    async getResponse(){
        var options = {
            uri: "https://www.google.com"
        }

        var response = await request(options);

        await delay(1000); // since we're using async functions, we can "await" a promise
        return response; 
        // previous code would return "undefined" when after it called setTimeout
    }

  }

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

Nodejs 异步/等待延迟 的相关文章

  • mocha.opts 已弃用,如何迁移到 package.json?

    我正在开发一个大型项目 自从上周我更新了摩卡以来 现在我们收到警告 DeprecationWarning 通过 mocha opts 进行的配置已被弃用并且 将从 Mocha 的未来版本中删除 使用 RC 文件或 改为 package js
  • 如何获取从 Express (Node.js) 中的表单传递的数据

    我想获取使用表单从页面传递的数据 并在重定向的页面中使用该数据 我的客户端有这个表格
  • 异步减少返回承诺

    我有一个对象数组 我必须为来自异步函数的每个对象添加一个属性 我正在执行 Array reduce 来迭代每个元素并仅返回一个结果 具有新属性的一个对象数组 我有这个 const res await resultOne reduce asy
  • 在 Node.js 中创建 JSON 数组

    我需要在用 Node js 编写的服务器中创建一个 JSON 字符串 以便在请求时发送到客户端 问题是这个 JSON 取决于服务器中的可用数据 因此 JSON 数组的大小并不总是相同 我已经尝试了一整天 但尽管我感觉很接近 但我仍然不明白
  • express-session:滚动会话过期配置

    所以我在 mongo 商店中使用快速会话 如下所示 app use session secret some secret here saveUninitialized false resave false store new MongoSt
  • Nodejs + npm,在ntfs分区安装模块

    我在安装 npm 模块时遇到问题 NodeJS 安装在 Windows 主机上 Virtual Box 上运行的 Ubuntu 11 10 上 我的项目文件位于 NTFS 分区上 我必须与 Windows 共享它们 当我尝试安装某些 npm
  • MongoDB 中两个集合之间的 Diff()

    我做过研究 如果这是一个重复的问题 我很抱歉 但其他问题的解决方案并不适合我 因此 我提出了一个新问题 使用 Javascript 比较两个集合的最佳方法是什么 我有数千个这样的 Mongo 文档格式的标头 url google com h
  • MongoDB insertMany 并跳过重复项

    我试图insertMany https docs mongodb com manual reference method db collection insertMany 项目进入我的 Mongo 数据库 但我想跳过重复的 ID 我在用着N
  • 如何向 node-http-proxy 响应添加标头

    我需要在第三方服务上解决CORS 所以我想构建一个代理来添加标头 Access Control Allow Origin 为什么这段代码没有添加标题 httpProxy require http proxy var URL https th
  • Node.js:您什么时候知道异步任务集合何时完成?

    我想深入一个目录 并根据正则表达式检查我在其中看到的每个文件的名称 基本上是通用unix的一个版本find命令 仅用 Node js 编写 我不关心文件的顺序 但我确实想确保获得所有文件 我有以下代码 我认为 它接近我想要的 它需要一个 s
  • 等待运算符错误

    我的代码有问题 我怎么解决这个问题 这个问题出现在await操作符中 public MyModel HttpClient client new HttpClient HttpResponseMessage response await cl
  • 使用 dnode 从服务器向客户端发送消息

    几个月前 我发现了 nowjs 和 dnode 并最终使用了 nowjs 并且https github com Flotype nowclient https github com Flotype nowclient 用于客户端 服务器双向
  • 从 Node.js 调用 execl、execle、execlp、execv、execvP 或 execvp 的方法

    POSIX 系统公开了一系列exec函数 允许人们将可能不同的东西加载到当前进程中 保留打开的文件描述符 进程标识符等 可以出于多种原因执行此操作 在我的情况下 这是引导 我想更改我自己的进程的命令行选项 然后在现有进程上重新加载它 这样就
  • NodeJS os 模块无法使用 userInfo()

    https nodejs org api os html os os userinfo options https nodejs org api os html os os userinfo options 节点版本 v4 2 6 NPM版
  • Node.js es6 使用index.js 导出/导入

    我有以下文件夹结构 src index js lib test js dist examples example js src lib test js export default class Test src index js impor
  • 带有非字符串值的 AWS S3 x-amz-meta 错误:InvalidHeader 和 InvalidParameterType

    尝试使用node js AWS sdk时s3Client upload带有元数据的可选参数 const AWS require aws sdk const s3Client new AWS S3 params Key key secret
  • 如何按单个整数字段对 JSON 进行排序? [复制]

    这个问题在这里已经有答案了 我有以下 JSON title title order 0 order 9 order 2 JSON 包含很多字段 我如何根据字段对它们进行排序order field 我一直在寻找 Nodejs 中内置的东西 但
  • heroku node.js bash:节点:找不到命令

    在 cedar stack 上的 heroku 上部署我的应用程序似乎存在一个奇怪的问题 我的节点进程甚至没有被调用 我的Proc文件如下 web node web js 和我的 package json 文件 name fuuzik ve
  • Eclipse 中的 node.js - 大多数人使用哪个插件?

    我最感兴趣的是服务器端 Web 开发 尽管能够在 Chrome 中重新部署一些部分会很好 我目前正在跑步Eclipse Indigo在 Ubuntu 上主要开发 Java Scala 程序并使用 git 到目前为止我遇到过http code
  • 不要在查询字符串 stringify 中对 url 进行编码

    有什么选择吗qs stringify那将not对网址进行编码 node gt var qs require querystring undefined gt qs stringify url http domain com url http

随机推荐

  • python pip install 在 Windows 上不起作用

    我在 Windows 上安装了 python 2 7 10 我尝试使用以下命令在命令行上安装 Django C users user myproject gt python pip install django 这会显示以下错误 pytho
  • 更改 UITextView 中一个链接的属性

    我有一个UITextView具有多个 URL 我通过设置激活dataDetectorTypes财产给UIDataDetectorTypeLink 然后我使用linkTextAttributes属性来设置链接的颜色 现在 当用户点击其中一个链
  • 此编码器要求从 initWithCoder 返回替换的对象:

    我的应用程序在 iOS 11 2 上运行良好 但在 iOS 11 3 中会崩溃 我有例外 由于未捕获的异常 NSGenericException 而终止应用程序 原因 此编码器要求从 initWithCoder 返回替换的对象 我有一个带有
  • 通过 golang 中的多个 HTTP 处理程序包含上下文对象

    我刚刚读过这篇博文 http blog golang org error handling and go TOC 3 关于创建函数类型并实现 ServeHTTP 该函数上的方法能够处理错误 例如 type appError struct E
  • 在 SQL 中实现不相交集逼近(并集查找)

    使用 SQL 实现近似不相交集的最佳方法是什么 Details 我有一个边表 存储为两列表 vertex a vertex b 我需要一个不同集合的表 存储为 vertex set id 每个顶点一行 用不相交的 set id 标记每个顶点
  • 应用于行的几何平均值

    我有这个数据框作为例子 Col1 Col2 Col3 Col4 1 2 3 2 2 我想添加名为 Gmean 的第四列 用于计算每行前 3 列的几何平均值 怎样才能完成呢 Thanks 一种方法是Scipy s geometric mean
  • 是否可以将 Riak CS 与 Apache Flink 一起使用?

    我要配置filesystem状态后端和zookeeper恢复模式 state backend filesystem state backend fs checkpointdir recovery mode zookeeper recover
  • 错误:在此 Practice4HomePage Widget Flutter(BLoc) 上方找不到正确的 Provider

    在flutter中学习bloc时出现错误 错误是 错误 无法在此 Practice4HomePage 小部件上方找到正确的提供程序 发生这种情况是因为您使用了BuildContext不包括提供者 你的选择 有以下几种常见场景 您在您的目录中
  • bash 脚本如何对后台任务执行相当于 Ctrl-C 的操作?

    有没有什么方法可以调用子进程 以便它及其所有子进程都收到中断 就像您按 Ctrl C 执行前台任务一样 我试图终止一个调用长时间运行的子进程的启动器脚本 我试过了kill SIGINT child 它不会向其后代发送中断 因此是无操作 并且
  • Django 信号重定向

    当用户登录时 我检查它是否属于特定组 如果是这样 我会重定向到特定页面 这是我的代码 apps py def OperatorRedirect sender user request kwargs from struttura employ
  • 删除正在进行 I/O 的文件:它是文件系统和/或操作系统功能吗?

    我正在编写一个 shell 脚本 它将在 Linux 上运行 但可以对位于已安装分区上的文件进行操作 可能有也可能没有 ext 文件系统 例如 它可以是 NTFS FAT32 或任何基于 inode 或非 inode 的系统 可以进一步重新
  • 如何在 Github Actions macos 运行程序中签署和公证 PKG

    Context 我正在构建一个 Github Actions 作业建造 签署和公证一个 PKG 文件 我正在使用一个Apple ID 帐户 工作流程需要用户名和密码 以及开发者 ID 安装者带私钥的证书 加密 两者都保存为机密 base64
  • 为什么忽略 SIGTRAP 不适用于 asm?

    我试图忽略 SIGTRAP 我有以下概念验证代码 include
  • RNN 中的梯度累积

    在运行大型 RNN 网络时 我遇到了一些内存问题 GPU 但我想保持我的批量大小合理 所以我想尝试梯度累积 在一次性预测输出的网络中 这似乎是不言而喻的 但在 RNN 中 您为每个输入步骤执行多次前向传递 因此 我担心我的实施无法按预期进行
  • 如何防止键盘在颤振中按提交键时消失?

    我正在制作一个颤振应用程序 用户可以在其中键入消息并点击键盘中的发送按钮来发送消息 问题是当我按下发送按钮时 消息被发送 但键盘会自动消失 我怎样才能防止这种情况发生 提前致谢 TextField autofocus true keyboa
  • Python/Pandas 中是否有函数可以获取两个日期时间之间的业务时间增量?

    我有一个带有两个日期时间列的 pandas 数据框 我想计算 业务分钟 中列之间的时间增量 使用 offsets 方法添加业务时间增量很容易 但我似乎找不到内置的东西可以返回工作日 小时 分钟 秒的时间增量 我对 Python 很陌生 所以
  • PHP JSON 将值数组放入 HTML 表中

    我正在从 API URL 提取 JSON 数据 我需要提取特定的键并将它们放入包含列和行的表中 6 列 x 20 行 KEYS 都是彼此重复的 val 内容 JSON 示例 response result Leads row no 1 FL
  • 从 ajax 调用返回一个值到父函数

    我有一个函数 我需要返回通过 ajax 调用获取的 url var heatmap new google maps ImageMapType getTileUrl function coord zoom var tileURL get ge
  • v[i++] 在 C 中未定义吗?

    我正在尝试编写一个通过 a 检查 a 的函数char a 并且经常最终使用类似的东西 if a i x i 现在我真的很想将其更改为a i 相反 但它似乎不起作用 问题 我在这里做错了什么吗 还是有一个干净的替代方案来避免i 注意 目前函数
  • Nodejs 异步/等待延迟

    我对这段代码有问题 var request require request promise class Test constructor async Start var response await this getResponse awa