如何从Javascript的父函数返回在子jQuery函数中生成的数组
How to return an array made in a child jQuery function from the parent function in Javascript?
我在另一个函数内使用jQuery json函数,我怎么能返回一个数组在jQuery函数作为我的父函数的返回值?
这是基本设置
function getFlickrSet(flickr_photoset_id){
var images = [];
images = $.getJSON(url, function(data){ return data; // I HAVE THE DATA HERE };
return images // I HAVE NO DATA HERE
}
var myImages = getFlickrSet(23409823423423);
alert(myImages); // this gives me nothing
我已经在jsfiddle上建立了一个例子,如果你能告诉我我的代码错在哪里,我会非常感激。谢谢你!
你不能。相反,传入一个函数:
function getFlickrSet(flickr_photoset_id, when_ready){
var images = [];
$.getJSON(url, function(data){
// prepare images
when_ready( images );
});
}
getFlickrSet(nnnn, function(images) {
alert(images);
});
你为什么不能那样做?因为"$. getjson()"调用是异步的。当回调函数被调用时(在这里您写了"I HAVE the DATA HERE"),外部函数已经返回了。您不能让浏览器等待调用完成,因此您可以设计API,以便代码可以传入并在结果可用时稍后运行。
Ajax是异步的(这就是'A'代表的意思),所以必须以异步的方式完成此操作,这归结为回调。您需要做的是将一个回调函数传递给您希望在Ajax请求完成时调用的外部函数(如果您愿意,可以称之为"回调")。你可以像这样给它设置alert:
function getFlickrSet(flickr_photoset_id) {
images = $.getJSON(url, alert); // <-- just the name of the function, no ()
}
var myImages = getFlickrSet(23409823423423);
// => An alert pops up with the data!
…但你更可能这样写:
function doSomethingWithData(data) { // we'll use this later
alert(data); // or whatever you want
}
function getFlickrSet(flickr_photoset_id, callback) {
// new parameter here for a function ------^
// to be given here -------v
images = $.getJSON(url, callback);
return images // I HAVE NO DATA HERE
}
var myImages = getFlickrSet(23409823423423, doSomethingWithData);
// => Your function `doSomethingWithData` will be called the data as a parameter
// when the $.getJSON request returns.
相关文章:
- 执行ajax成功函数-jQUERY
- 函数jquery.html()不提供数据属性集值
- 将变量放入ajax函数JQuery
- 函数jquery的未定义返回
- 如何在嵌套函数jquery上保持变量的值不变
- 用我的函数jquery给出数据/参数
- Firefox在调用函数(jquery)时冻结
- 在传递节时触发一个函数 - jquery
- 循环执行数组函数jQuery
- 在函数中调用另一个函数JQuery
- 对象不是函数-Jquery/JavaScript
- TypeError:对象不是函数-jquery
- 获取函数jQuery设置的属性
- 从函数jquery获取更新的变量值
- 切换而不是悬停函数jQuery
- 函数jQuery.animation()运行了两次行,但不起作用
- 使用函数 jQuery 获取变量
- 自执行函数 jquery 与 JavaScript 的区别
- 从回调函数 -JQuery 获取返回值
- 一个接一个地执行函数 JQUERY