如何从javascript中的回调函数中获取完整数据

2024-03-18

我编写了以下函数,它从 url 获取 json 数据。

function getWeatherDataForCities(cityArray){
  var arrAllrecords = [];
  var toDaysTimestamp = Math.round((new Date()).getTime() / 1000) - (24*60*60);
  for(var i in cityArray){

    for(var j=1; j<=2; j++){
        var jsonurl = "http://api.openweathermap.org/data/2.5/history/city?q="+cityArray[i]+"&dt="+toDaysTimestamp;

        $.ajax({
            url: jsonurl,
            dataType: "jsonp",
            mimeType: "textPlain",
            crossDomain: true,
            contentType: "application/json; charset=utf-8",
            success: function(data){
              arrAllrecords[j]["cityName"] = data.list[0].city.name;
              arrAllrecords[j]["weather"] = data.list[0].weather[0].description;

        } });
        toDaysTimestamp = toDaysTimestamp - (24*60*60);
    }   
  }

  return arrAllrecords;  //returning arrAllrecords
}

$(document ).ready(function() {

  var cityArray = new Array();
  cityArray[0] = "pune";
  var arrAllRecords = getWeatherDataForCities(cityArray);
  //Print All records returned by getWeatherDataForCities(cityArray);
});

我在上面的代码中写了一些注释。我已经调用getWeatherDataForCities function返回所有记录url.我已声明getWeatherDataForCities array在函数中。我想添加该数组中的所有返回记录。我已按照上面的方法尝试过,但没有任何内容进入array.

在控制台中显示 j 和 arrAllrecords 未定义。

如何从回调函数中获取数组中的所有记录?

您的回复将受到高度赞赏


Your getWeatherDataForCities函数不会返回任何内容,因为 ajax 操作是异步的。您需要为此使用回调。

修改您的函数以接受回调函数:

function getWeatherDataForCities(cityArray, callback){
    var arrAllrecords = [];
    var toDaysTimestamp = Math.round((new Date()).getTime() / 1000) - (24*60*60);
    for(var i in cityArray){

       for(var j=1; j<=2; j++){
           var jsonurl = "http://api.openweathermap.org/data/2.5/history/city?q="+cityArray[i]+"&dt="+toDaysTimestamp;

            $.ajax({
                url: jsonurl,
                dataType: "jsonp",
                mimeType: "textPlain",
                crossDomain: true,
                contentType: "application/json; charset=utf-8",
                success: function(data){
                arrAllrecords[j]["cityName"] = data.list[0].city.name;
                arrAllrecords[j]["weather"] = data.list[0].weather[0].description;
                // call the callback here
                callback(arrAllrecords);
               } 
            });
           toDaysTimestamp = toDaysTimestamp - (24*60*60);
       }   
   }
}

并像这样使用它:

$(document ).ready(function() {
  var cityArray = new Array();
  cityArray[0] = "pune";
   getWeatherDataForCities(cityArray, function(arrAllrecords) {
       // Do something with your data
   });
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何从javascript中的回调函数中获取完整数据 的相关文章

随机推荐

  • Unicorn 与 Ruby 2.4.1 导致奇怪的崩溃

    我正在从 Ruby 2 3 1 升级到 Ruby 2 4 1 这样做后 Unicorn 似乎与新版本不兼容 我收到以下错误 我正在使用 Unicorn 5 1 0 并尝试了 Unicorn 5 3 1 无济于事 我需要使用不同的库而不是 X
  • 树形视图验证

    树视图有叶节点复选框 我需要验证树视图 如果至少检查了一个节点 并且用户可以选择的节点数量不超过特定 例如 3 个节点 注意 Treeview是asp net树视图 不是ajax树视图 好吧 既然你没有提到你想要什么类型的验证 我将同时进行
  • Google 驱动器 - WSL2 中的虚拟驱动器安装

    有谁知道我是否可以在win10系统中的wsl2中安装Google驱动器 虚拟驱动器 谢谢 sudo mount t drvfs G mnt g 第一次这样做时 运行sudo mkdir mnt g first
  • 等待 QueueUserWorkItem 完成

    如果我将作业添加到线程池中QueueUserWorkItem 在所有工作完成之前 如何阻止我的计划继续进行 我知道我可以添加一些逻辑来阻止应用程序运行 直到所有作业完成 但我想知道是否有类似的东西Thread Join 或者是否有任何方法可
  • .NET Core 中的程序集绑定重定向

    如何在 NET Core 中进行程序集绑定重定向 我发现这个问题被问了几次 但没有提供解决方案 情况微不足道 我有一个引用版本 10 中的程序集 A 的包 我想使用版本 12 中的程序集 A 在标准 NET 中 它可以完美地与此配合使用
  • 在运行时隐藏水晶报表中的列?

    如何在运行时隐藏水晶报表中的列 感谢您的任何建议 选项 1 使用条件抑制逻辑隐藏 显示冗余字段 使用参数字段来驱动所需字段的抑制公式 如果您想消除字段之间的空格 则需要将字段堆叠在一起并适当地抑制它们 在您的示例中 第 2 列将包含 fie
  • 通过 CSS 根据高度设置元素宽度

    我有一组元素 要求它们的最小宽度等于它们的高度 但高度没有明确设置 目前我可以通过设置 css 来实现这一点min width通过 jQuery 属性 document ready function myClass each functio
  • Asp.net 图像大小调整质量

    我有这段代码 用于调整和保存用户发布的文件的大小 问题是 当我调整到 480px 宽度时 图像质量会下降很多 而且大小 以 kb 为单位 仍然很大 例如 当我使用 Paint 之类的软件 手动 将同一图像的大小调整为 480px 时 质量仍
  • 如何在全日历中将事件的背景颜色更改为不同的颜色?

    我正在使用最新版本fullcalendar 我查看了文档如何更改背景颜色事件 但我不知道如何处理不同的事件 我需要带有红色 蓝色 绿色事件的代码示例 如下图所示 我在文档网站上看到了这段代码 但我无法应用两种颜色 calendar full
  • 在 check_box_tag 的 onclick 函数中传递 Rails 变量

    我正在使用 Rails 3 0 在我看来 我试图拥有一个每行都有一个复选框的表 以及一个带有特定参数 rails 变量 的 onclick 事件函数 table tr td gt td tr table 我尝试了很多方法 但没有成功 我知道
  • 使用 slick 3.0.0 流结果和 Postgresql 的正确方法是什么?

    我正在尝试弄清楚如何使用流畅的流媒体 我使用 slick 3 0 0 和 postgres 驱动程序 情况如下 服务器必须向客户端提供按大小 以字节为单位 限制的数据块分割的数据序列 因此 我编写了以下巧妙的查询 val sequences
  • 获取 Jenkins Pipeline 插件中工作区目录的绝对路径

    我目前正在对 Jenkins Pipeline 插件 以前称为 Workflow 插件 进行一些评估 阅读文档我发现我目前无法使用以下命令检索工作区路径env WORKSPACE 目前 以下变量在工作流程脚本中不可用 节点标签 工作空间 S
  • 使用 .NET RegEx 检索第二个“-”之后的字符串部分

    这是我的第一条堆栈消息 希望你能帮忙 我有几个字符串需要分解以供以后使用 这里有几个例子来说明我的意思 fred 064528 NEEDED frederic 84728957 NEEDED sam 028 NEEDED 正如您在上面看到的
  • 有没有办法跨模块使用局部变量?

    我有一个带有模块和用户窗体的 VBA 项目 我想在我的用户表单中使用模块中的一些变量 我是否有必要在全局声明这些变量 我不喜欢全局变量 因为它们在代码执行后保留在内存中 并且我必须在宏开始时一一重置这些变量 我无法使用关键字 End 从内存
  • 电子邮件中的 Message-ID 有什么用?

    据我所知 每个消息 ID 都必须是唯一的 但是如果我们强制标头具有固定值 则可能会创建重复的消息 ID 所以我不明白他们说 Message ID 应该是唯一的有什么意义 但他们很容易创建重复项 如果任何有一点阅读和基本编程知识的人都可以轻松
  • 使用 Keras 加载之前保存的重新训练的 VGG16 模型时出现 ValueError

    我在 Keras 中使用 VGG16 架构 我通过以下方式对其进行了重新训练以满足我的需求 vgg16 model keras applications vgg16 VGG16 model Sequential for layer in v
  • CUDA:如何直接在GPU上使用thrust::sort_by_key? [复制]

    这个问题在这里已经有答案了 Thrust 库可用于对数据进行排序 该调用可能如下所示 带有键和值向量 thrust sort by key d keys begin d keys end d values begin 在 CPU 上调用 d
  • Azure DevOps 服务连接到 B2C 租户?

    我正在尝试建立从 Azure DevOps 到我的 Azure B2C 租户的服务连接 但遇到了问题 我开始认为这是不可能的 我与主 Azure 订阅 租户有多个服务连接 但特别想要与我的 B2C 租户建立连接 以便我可以使用 Terraf
  • 禁用复制构造函数

    我有一堂课 class SymbolIndexer protected SymbolIndexer public static inline SymbolIndexer GetUniqueInstance static SymbolInde
  • 如何从javascript中的回调函数中获取完整数据

    我编写了以下函数 它从 url 获取 json 数据 function getWeatherDataForCities cityArray var arrAllrecords var toDaysTimestamp Math round n