如何在JavaScript中的其他函数中使用回调?

时间:2018-03-28 13:00:47

标签: javascript ajax function callback

我很困惑如何在回调函数中使用变量来自另一个回调之外的函数...

问题的简单解释:

有从网络获取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)
);

1 个答案:

答案 0 :(得分:0)

只需将回调放在函数中,如下所示:

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??
);