jQuery - 防止进一步执行代码,直到显示html之后

时间:2012-07-05 20:16:19

标签: jquery

我正在使用jquery webcam plugin和闪存保存方法。我希望在用户单击“保存”后设置一条消息,以便他们知道它正在保存。我的代码是这样的:

$('#savepicmessage').html("Saving picture, please wait");
webcam.capture();
webcam.save('/savephoto.php');

问题是只有在保存图片后才会显示“保存图片”信息。有没有办法阻止执行.html(“保存图片,请稍候”)调用后的代码,以便在消息显示之前不执行?

我可以使用setTimeout实现它,并在从那里调用的函数中捕获并保存,但这不够可靠。

我看了看,然后推迟了。但这似乎没有用。

2 个答案:

答案 0 :(得分:0)

根据插件的文档,您可以构建插件的加载方式:

 $("#camera").webcam({
    width: 320,
    height: 240,
    mode: "callback",
    swffile: "/download/jscam_canvas_only.swf",
    onTick: function() {},
    onSave: function() {

         $('#savepicmessage').html("Saving picture, please wait");

    },
    onCapture: function() {},
    debug: function() {},
    onLoad: function() {}
 }); 

之前没有使用此插件,因此不确定您是否会执行此操作onSaveonTickonCaptureonLoad,但如果您展示了初始化代码,会更有帮助。

答案 1 :(得分:0)

一般来说,我使用promises和$ .when()之类的东西来协调AJAX调用或动画等异步事件。但事实上,这种行为几乎就像它的异步一样令我感到惊讶。

但是,我有一个建议。你可以在第一次调用之后循环使用$('#savepicmessage')。html()来设置它并测试返回的内容吗?也许一旦返回的值与您尝试将其设置为匹配,您就可以使用网络摄像头功能,并且在调用网络摄像头之前,用户可以看到您的消息。