【问题标题】:How to use callbacks in other functions in JavaScript? [duplicate]如何在 JavaScript 的其他函数中使用回调? [复制]
【发布时间】:2018-03-28 13:00:46
【问题描述】:

我不知道如何在回调函数中使用来自回调函数之外的另一个函数的变量...

问题简单说明:

有从 web 获取 json 的函数。它已经需要一些论据。成功后,回调会稍微操纵数据。现在,另一个负责更新图表的函数是为了从回调中获取操作数据并做自己的事情......

我的代码:

var mainData;

function getMainData (city, callback) {
  this.city = city;
  var url = "http://api.openweathermap.org/data/2.5/weather?q=appid=7ce3e1102e1902e0f878c2a640e95aed&london";

  $.ajax ({
    method:  "GET",
    type:    "json",
    cache:   "false",
    url:      url,
    success:  callback
  })
};

function callback (data) {
  mainData = data;

  var dArray = data.list.map(a=>a.dt)
  var tempMinArray = data.list.map(a=>a.main.temp_min)
  var tempMaxArray = data.list.map(a=>a.main.temp_max)
}

function changeChart (chartName, howToPassTempMinArrayHere?) { // <--- this is where I have no idea how to pass callbacks variables
  chartName = chart.name.(....);
  someDataFromMainData = chart.data.(....);
};


// on click of button (...) : 
(
getMainData(callback); // why no action?? nothing??
changeChart (myChart, someDataFromMainData)
);

【问题讨论】:

  • 只需将调用放在changeChart()内部回调函数中。
  • @Pointy 我有几个类似于changeChart的功能。他们都必须进入回调,所以我可以使用获取的数据吗?编辑:实际上把它放在里面是没有意义的,因为每次我都会用不同的参数调用这个函数......?

标签: javascript ajax function callback


【解决方案1】:

只需像这样将回调放在函数中:

var mainData;

function getMainData (city, callback) {
  this.city = city;
  var url = "http://api.openweathermap.org/data/2.5/weather?q=appid=7ce3e1102e1902e0f878c2a640e95aed&london";

  $.ajax ({
    method:  "GET",
    type:    "json",
    cache:   "false",
    url:      url,
    success:  callback
  })
};

function callback (data) {
  mainData = data;

  var dArray = data.list.map(a=>a.dt)
  var tempMinArray = data.list.map(a=>a.main.temp_min)
  var tempMaxArray = data.list.map(a=>a.main.temp_max)
  
  // Put your code here
  changeChart (myChart, someDataFromMainData)
}

function changeChart (chartName, howToPassTempMinArrayHere?) { // <--- this is where I have no idea how to pass callbacks variables
  chartName = chart.name.(....);
  someDataFromMainData = chart.data.(....);
};


// on click of button (...) : 
(
getMainData(callback); // why no action?? nothing??
);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-26
    • 1970-01-01
    • 1970-01-01
    • 2022-01-22
    相关资源
    最近更新 更多