首页 > 解决方案 > 调用多次调用 API 的函数

问题描述

我正在尝试复制一个网页包含多个区域的场景,每个区域都由 API 调用更新并每 X 秒刷新一次。

window.setInterval(function() {
  console.log("interval start");
  getData;
  console.log("interval end");
}, 5000);

//for (i = 1; i <= 3; i++) {
//    console.log(i);
//    setTimeout(getData, 5000);
//}

function getData(url, id) {
  console.log("getData start");
  $.get(url, function(data) {
    console.log('data=' + data);
    $(id).html(data);
  });
};

getData('@Url.Action("GetTemperature", "SomeData")', '#temp');
getData('@Url.Action("GetStockPrice", "SomeData")', '#stock');
getData('@Url.Action("GetStateName", "SomeData")', '#state');
getData('@Url.Action("GetARandomDate", "SomeData")', '#myDate');

以下是日志:

  • 获取数据开始
  • AjaxTimer:95 getData 开始
  • AjaxTimer:95 getData 开始
  • AjaxTimer:95 getData 开始
  • AjaxTimer:98 数据=188
  • AjaxTimer:98 数据=佛蒙特州
  • AjaxTimer:98 数据=88
  • AjaxTimer:98 数据=2014-08-26T00:00:00
  • AjaxTimer:83 间隔开始
  • AjaxTimer:85 间隔结束
  • AjaxTimer:83 间隔开始
  • AjaxTimer:85 间隔结束
  • AjaxTimer:83 间隔开始
  • AjaxTimer:85 间隔结束

getData不调用第二次。我不确定我要去哪里错了。

标签: jqueryajax

解决方案


setInterval的是这样的:

    window.setInterval(function () {
        console.log("interval start"); // Log to console
        getData;                       // A variable
        console.log("interval end");   // Log to console
    }, 5000);

JavaScript 中的所有函数调用都必须以 结尾(),因此只需将中间行更新为

        getData();

并且 getData 将被间隔调用。


推荐阅读