one附近有问题。 在某个地方,我对文件输入有一个绑定:
var file;
function initLoadImg(){
$('#test').on('change', function() {
file = event.target.files;
// block 1
console.log("hello");
center.html('<span id="Tamb">25°C</span>');
over = true;
});
}
我用另一个javascript函数触发它:
var over = false;
var center;
function loadImg(){
var elem = $('<div class="widget simpleimgchart center"><div class="matable"><div class="center"></div></div></div>');
center = elem.children().children();
$("#test").trigger('click');
passIfOver();
// block 2
console.log("bye");
return elem;
}
function passIfOver() {
if (over) {
return;
} else {
setTimeout(passIfOver(), 1000);
}
}
这样,我就能在控制台的“再见”之前看到“你好”。 但是我真的不喜欢这个解决方案,(它不干净),用户可能需要等待1秒才能获得任何反馈。 是否有另一种方法可以确保在点击回调结束后执行返回元素?
编辑:我的代码甚至不起作用,因为setTimeout,我失去了约束......
编辑2:我的目标是在部件代码2之前执行部件代码1.我不希望我的函数loadImg()在代码1完成执行之前返回。
答案 0 :(得分:0)
我建议您查看PubSub模式(http://davidwalsh.name/pubsub-javascript)。
答案 1 :(得分:0)
只需在触发器功能中移动返回:
var over = false;
function loadImg(){
var elem = $('<div class="widget simpleimgchart center"><div class="matable"><div class="center"></div></div></div>');
var center = elem.children().children();
$("#test").trigger('click', function(){
center.html('<span id="Tamb">25°C</span>');
return elem;
});
}
.trigger的第二个参数是一个回调函数,其中的所有内容都将在触发器完成后执行。