从父函数返回什么来获取从子函数/嵌套函数返回的值

时间:2015-12-14 21:48:16

标签: javascript api

我一直在研究这个问题,我觉得解决方案必须非常明显,但我无法理解。

我有一个函数(getImage),在该函数内部我有一个getJSON函数。我对从API调用返回的数据做了一些处理,然后返回它,所以我返回的值是我想要的实际数据,但是如何让父函数(getImage)也返回该值呢? / p>

var getImage = function(urlforAPI) {
  $.getJSON(urlforAPI, function(imageData) {
      console.log(imageData);
      for (x in imageData.query.pages) {
        if (imageData.query.pages[x].hasOwnProperty("thumbnail")) {
          var storyImage = "<img src=" + imageData.query.pages[x].thumbnail.source + ">";
        } else {
          var storyImage = "No image.";
        }
      }// End FOR loop
      console.log(storyImage); //This is logging the data I need
      return storyImage;
  })//End of getJSON
  //What do I return here to get the same value that the child function returned?
}// End getImage

如果重要,我将在另一个函数中调用此函数并将其存储为var tempImage = getImage(theURL)。我传递的参数是在我调用它的函数内部生成的。我将使用tempImagegetImage的值输出到DOM。

如何从getJSON子函数返回的值在调用时从getImage返回?

我读了这个javascript child function pass the return to the parent function return,但我并不完全理解callback(true) / callback(false)位正在做什么。

1 个答案:

答案 0 :(得分:1)

在第一个函数中初始化变量,在嵌套函数中设置它,然后返回它。

var storyImage = "";
$.getJSON(urlforAPI, function(imageData) {
  console.log(imageData);
  for (x in imageData.query.pages) {
    if (imageData.query.pages[x].hasOwnProperty("thumbnail")) {
      storyImage = "<img src=" + imageData.query.pages[x].thumbnail.source + ">";
    } else {
      storyImage = "No image.";
    }
  }// End FOR loop
  console.log(storyImage); //This is logging the data I need
})//End of getJSON