从深度封闭中返回
Return from deep closures
如果我有一些代码,例如 -
loadImages(pos - 1,function(){
loadImages(pos,function(){
loadImages(pos + 1);
});
});
function loadImages(key){
$('.slide:nth-child('+key+') .imgholder').each(function(){
par = $(this).parent();
imgHold = $(this);
if (loaded_images.indexOf($(imgHold).data('img-src')) > 0){
return true;
} else {
$(imgHold).attr('src',$(imgHold).data('img-src')).on('load', function() {
if (!$(imgHold).hasClass('fgimg')){
$(par).css('background-image','url('+$(imgHold).data('img-src')+')');
} else {
$(imgHold).css('visibility','visible');
}
// How do I return loadImages from here??
})
}
})
}
我想在此函数完成后触发代码,因此我需要在我的//注释行返回 true。这样做的官方/最佳方法是什么?
你需要
一个回调:
function loadImages(key, callback){
$('.slide:nth-child('+key+') .imgholder').each(function(){
par = $(this).parent();
imgHold = $(this);
if (loaded_images.indexOf($(imgHold).data('img-src')) > 0){
return true;
} else {
$(imgHold).attr('src',$(imgHold).data('img-src')).on('load', function() {
if (!$(imgHold).hasClass('fgimg')){
$(par).css('background-image','url('+$(imgHold).data('img-src')+')');
} else {
$(imgHold).css('visibility','visible');
}
callback(true);
// How do I return loadImages from here??
})
}
})
}
用法:
loadImages(key, function(yourVar){
console.log(yourVar); // true
});
您必须注意未调用回调的情况。
更多信息: http://javascriptissexy.com/understand-javascript-callback-functions-and-use-them/
相关文章:
- 节点导出返回一个空对象
- ES6构造函数返回基类的实例
- 监视函数从服务返回不起作用,但作用域函数起作用
- 控制台返回var不是't定义,但它是
- 从函数返回角度承诺
- Javascript返回值只在循环中返回一次
- 从控制器返回后Ajax启动事件激发
- CKFinder 3为所选文件返回错误的URL
- 如何在d3.js中返回路径的y坐标
- 如何从jquery函数返回变量
- Angular js-返回一个包含类似
- JSONP请求返回结果,但也触发error_callback
- 如何使用Spring MVC将Facebook返回的响应数据保存在Java类中
- 从HTTPGET返回一个自定义对象列表,以便在Angular 2应用程序中使用
- JS验证ajax返回的html中的表单数据
- 使用谷歌应用程序脚本将服务器端数据表返回到客户端
- 返回所有DOM元素的数组,按深度排序
- 从深度封闭中返回
- Angular进行深度比较,并返回每一项的差值
- Javascript:在树中深度查找对象,然后通过树返回对象和它的路径