我一直在研究这个问题,我觉得解决方案必须非常明显,但我无法理解。
我有一个函数(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)
。我传递的参数是在我调用它的函数内部生成的。我将使用tempImage
将getImage
的值输出到DOM。
如何从getJSON子函数返回的值在调用时从getImage
返回?
我读了这个javascript child function pass the return to the parent function return,但我并不完全理解callback(true)
/ callback(false)
位正在做什么。
答案 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