在异步函数中推送到数组不起作用[重复]

2023-11-27

这是我的代码:

exports.propertyById = async (req, res) => {
    try {
        const {propertyId} = _.get(req, 'params'),
        propertyData = await bService.getPropertyById(propertyId);
        console.log(propertyData);
        const propertyPhotoList = [];
        async function getPhotoData(item, index){
            const id = item.split('#')[1];
            const response = await fetch(`http://localhost:4000/api/propertyphoto/${id}`);
            const body = await response.json();
            console.log(body);
            propertyPhotoList.push(body);
        }
        propertyData.PropertyPhotos.map(getPhotoData);
        console.log(propertyPhotoList);
        return res.success(res, propertyData);
    } catch (err) {
        return res.error(res, err.response.status || 500, err.response.statusText || err);
    }
}

让我感到困惑的是,异步函数“getPhotoData”内的“console.log(body)”完美地返回了 JSON 对象。

但异步函数“getPhotoData”之外的数组仍然返回为空“[]”。

我不确定该对象是否未成功推送,或者这是否是异步/等待的某种问题。我来自回调,所以这对我来说仍然是新的。

我在 Ubuntu 18.10 上使用 Node.js v8.12.0。


两个问题:

  1. 你不应该使用.map对于副作用。它返回一个新数组,因此您应该使用它。

  2. .map什么都不知道async功能。你所做的就是创造一系列承诺。什么时候.map当你的函数返回时,承诺还没有“完成”。你需要await他们全部。

照这样说:

async function getPhotoData(item, index){
    const id = item.split('#')[1];
    const response = await fetch(`http://localhost:4000/api/propertyphoto/${id}`);
    return await response.json();
}
const propertyPhotoList = await Promise.all(
    propertyData.PropertyPhotos.map(getPhotoData)
);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在异步函数中推送到数组不起作用[重复] 的相关文章

  • 鼠标移动时画布拖动

    我正在尝试构建一个可以使用鼠标移动拖动的画布 我做了一些我无法理解的错误 因为一开始似乎有效 然后出现了一个增量错误 使画布移动得太快 考虑以下代码 window onload function var canvas document ge
  • 如何在单击按钮时清除反应挂钩中的间隔

    我正在用反应钩子构建一个简单的计时器 我有两个按钮启动和重置 当我单击开始按钮时 handleStart 函数工作正常 计时器启动 但我不知道如何在单击重置按钮时重置计时器 这是我的代码 const App gt const timer s
  • document.write 在同一页面上显示内容。

    我对 javascript document write 方法有疑问 大多数情况下 当我使用 document write 时 它会向我显示在不同页面中使用该方法编写的内容 例如 如果我写这样的命令 document write Hello
  • 如何将焦点设置在 BootStrap 中的第一个输入字段上? [复制]

    这个问题在这里已经有答案了 可能的重复 如何将焦点设置到独立于 id 的 HTML 表单中的第一个输入元素 https stackoverflow com questions 277544 how to set the focus to t
  • 为什么这个递归函数返回未定义?

    我正在尝试编写一个使用递归组合两个字符串的函数 我的代码如下 但我不知道为什么该函数返回未定义 特别是当我在基本情况下使用 console log 时 它不会打印未定义而是打印正确的值 var str3 function merge str
  • NodeJS - 将相对路径转换为绝对路径

    In my 文件系统我的工作目录在这里 C temp a b c d 在 b bb 下有文件 tmp txt C temp a b bb tmp txt 如果我想从工作目录转到该文件 我将使用以下路径 bb tmp txt 如果该文件不存在
  • 文件缓存:查询字符串与上次修改时间?

    我正在研究缓存网站资源的方法 并注意到大多数与我类似的网站都使用查询字符串来覆盖缓存 例如 css style css v 124942823 后来 我注意到每当我保存 style css 文件时 最后修改的标头都会 更新 使得查询字符串变
  • iPhone 上的锁定方向 UIWebView

    有没有办法锁定 UIWebView 的方向 使用 Obj C JS 还是 Html 我不想有按钮或任何东西 我只想在应用程序打开时将其锁定为纵向 好像这个堆栈溢出帖子 https stackoverflow com questions 43
  • 如何在数据表角度中基于 JSON 动态填充表值?

    我在用着Angular 数据表 https l lin github io angular datatables 我需要能够根据返回的数据动态创建表 换句话说 我不想指定列标题 Example json数据 id 2 city Baltim
  • 即使我的情况按预期发生变化,Angular ngClass 也不会更新我的课程

    我正在创建的模板中有类似的内容 div class nng 3 div 价值app layout isNavbarFixed等用零或一初始化 并且页面第一次加载时 适当的类被插入到我的div 不过 此后通
  • Java 中处理异步响应的设计模式

    我读过类似问答的答案 如何在 JAVA 中创建异步 HTTP 请求 https stackoverflow com questions 3142915 how do you create an asynchronous http reque
  • 如何从 Rx Subscribe 回调异步函数?

    我想回调 Rx 订阅中的异步函数 例如 像那样 public class Consumer private readonly Service service new Service public ReplaySubject
  • 为什么 console.log() polyfill 不使用 Function.apply()?

    我一直在看一些流行的console log 包装 填充 保罗 爱尔兰的 http paulirish com 2009 log a lightweight wrapper for consolelog 本阿尔曼的 http benalman
  • chrome 选项卡/窗口中的 window.open 行为

    我有一小段 javascript 旨在打开两个或更多选项卡 这在 FF 和 IE 中工作正常 但 chrome 会在新窗口而不是选项卡中打开第二个窗口 它不依赖于 url 因为我已经尝试过使用两个相同的 url 第一个在选项卡中打开 第二个
  • WebpackError:ReferenceError:Gatsby 上未定义窗口

    我已经在互联网上进行了大量搜索 但无法解决这个问题 我正在使用 Gasby 开发静态页面 但遇到此错误 WebpackError ReferenceError window is not defined 我的线索是 这与我正在使用的引导 模
  • eventSources 到事件 Json,完整日历

    我正在尝试从 eventSources 获取 json 调用到我的事件 我在 eventSources 中返回的 json 是 title Title Test start 1305841052 当我将此字符串传递到事件中时 它会正确显示日
  • 测试 jQueryUI 是否已加载

    我正在尝试调试网站 并且我认为 jQueryUI 可能未正确加载 如何测试 jQueryUI 是否已加载 if jQuery ui UI loaded OR if typeof jQuery ui undefined UI loaded 应
  • Socket.io、集群、快速和同步事件

    1周以来我遇到了一个大问题 我尝试将实际在单核上运行的 node JS 项目转换为具有集群的多核 对于 websockets 目前 我对事件没有任何问题 但是 对于 xhr polling 或 jsonp polling 我在集群模式下使用
  • 如何强制下载图片?

    我的页面上有一个动态生成的图像 如下所示 img src 我不想告诉我的用户右键单击图像并点击保存 而是想公开一个下载链接 单击该链接将提示下载图像 如何实现这一目标 最初我在 js 中尝试这样做 var path my image att
  • jQuery appendTo(), json 在 IE 6,7,8 中不起作用

    我这两天绞尽脑汁想找到解决办法 我使用 jQuery ajax 从数据库中获取值 以便在另一个框发生更改时更新一个框 php 脚本从数据库中获取值 然后输出 json 它在 FF 中工作正常 但在所有版本的 IE 中 选择框都不会更新 我已

随机推荐

  • 如何唤醒休眠的 pthread?

    我正在用 C 编写一个程序 我注意到它获得了许多线程 其目的是每隔一段时间做一些事情 其中 有 3 或 4 个 我决定通过编写一个调度程序服务来重构 使用这些线程的其他地方可以订阅该服务 这应该将我随时运行的额外事件线程的数量减少到一个 我
  • 将 TOP 与 GROUP BY 一起使用

    带桌子table1像下面这样 flight orig dest passenger bags 1111 sfo chi david 3 1112 sfo dal david 7 1112 sfo dal kim 10 1113 lax sa
  • std::throw_with_nested 需要 C++11 中的多态类型吗?

    为什么不能编译 尝试使用 Clang 3 4 2 和 GCC 版本 4 7 4 4 8 3 和 4 9 1 include
  • 从外部 div 滚动 div

    查看下面的小型 html 结构示例以了解上下文 看看这个fiddle问题的示例 对小提琴用户的简短说明 向左滚动 垂直滚动条不可见 向右滚动 垂直可见 我希望垂直滚动条始终可见 要求 标题必须保持固定 滚动时可见 长解释 我有一个带有固定标
  • C++:模板和单例模式

    碰巧我需要臭名昭著的单例模式 更好的是 它发生了 所以我需要臭名昭著的 C 模板与该模式的结合 那么 让我烦恼的是 template
  • 事件调度程序应每月执行一次

    我的机器上安装了 Win XP 操作系统和 XAMPP 我需要在每月第一天的凌晨 12 00 00 执行我的事件 调度程序 意思是每个月的1号 例如 1 月 1 日 2 月 1 日 3 月 1 日 和 我还需要在同一事件中调用存储过程 我想
  • 如何在生产中管理 ASP.NET SQL 成员角色/用户?

    如何在生产计算机上设置 asp net sql 成员资格角色 成员资格提供程序 我正在尝试设置 BlogEngine NET 所有文档都说要使用 Visual Studio 中的 ASP NET 网站管理工具 但这在生产计算机上不可用 我是
  • ExtJS按钮样式工具栏[重复]

    这个问题在这里已经有答案了 我想知道是否可以将按钮放入面板的工具栏中 但让它保留按钮的外观 就好像它只是在普通面板中一样 例如 我希望按钮看起来像这样 然而 它看起来像这样 非常感谢 EDIT 创建工具栏的代码 xtype toolbar
  • 稳健的多边形法线计算

    是否有一个好的鲁棒算法来计算凸多边形的法向量 当然是3D 对于三角形 这很容易 取三角形的两条边并计算叉积 vec3 u point 0 point 1 v point 0 point 2 vec3 n normalize cross u
  • 如何将时间戳列映射到JPA类型?

    我正在使用 玩 1 2 4 和 PostgreSQL 9 1 我创建了一个表created at列 类型 timestamp without time zone 它的默认值为now 当我使用该表的实体类获取数据时 问题就出现了 这creat
  • Magento:缩小 HTML 输出?

    magento中是否有任何文件可以输出所有html 我想缩小所有 html 输出 Magento 使用响应对象发送所有输出 所有的输出都会添加到这个对象中 然后它的sendResponse方法被调用 如果你想改变输出 设置一个监听器http
  • UTF-8百分比编码和python

    我试图让 python 给我百分比编码的字符串 我正在与之交互的 API 我认为它使用的是百分比编码的 UTF 8 为 提供 c3 ae 然而 python 的 urllib quote 给出 3F import urllib mystri
  • Java 相当于 Kotlin 中的 arrayof()/ listof()/ setof()/ mapof()

    我只是想知道java是否有像kotlin中那样的arrayof listof setof mapof 等价物 如果没有 有什么方法可以类似地工作吗 我发现它们与java非常不同 顺便说一句 intArrayOf arraylistof ha
  • 如何在 R 中比较两个数据框/表并提取数据?

    在尝试提取下面两个数据帧之间的不匹配项时 我已经成功创建了一个新的数据帧 其中不匹配项被替换 我现在需要的是不匹配的列表 dfA lt structure list animal1 c AA TT AG CA animal2 c AA TB
  • 操作栏显示在其选项卡下方

    当我设置这些属性时 actionBar getSupportActionBar actionBar setDisplayHomeAsUpEnabled true actionBar setDisplayShowHomeEnabled fal
  • 带进度条的文件复制

    我使用了这段代码 using System using System Collections Generic using System ComponentModel using System Windows Forms using Syst
  • 正确处理 VBA (Excel) 中的错误

    我已经使用 VBA 有一段时间了 但我仍然不太确定错误处理 一篇好文章是CPearson com 但是我仍然想知道我以前执行 ErrorHandling 的方式是否完全错误 Block 1 On Error Goto ErrCatcher
  • 错误:不变违规:findAllInRenderedTree(...):实例必须是复合组件

    在 JEST 中为 React 文件编写测试用例时 我收到此错误 以下是我的示例代码 search basr test js jest autoMockOff global React require react addons jest s
  • 如何在 Symfony 2.3 的功能测试中登录用户会话?

    我在 stackoverflow 上读过很多关于此的文章 但大多数方法在 Symfony 2 3 中没有用 所以我尝试在测试中手动登录用户以在后端进行一些操作 这是我的 security yml security role hierarch
  • 在异步函数中推送到数组不起作用[重复]

    这个问题在这里已经有答案了 这是我的代码 exports propertyById async req res gt try const propertyId get req params propertyData await bServi