0

我正在使用带有 Flash 保存方法的jquery 网络摄像头插件。我想在用户单击保存后设置一条消息,以便他们知道它正在保存。我的代码是这样的:

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

问题是“保存图片”消息仅在图片保存后显示。有没有办法阻止执行 .html("Saving picture, please wait") 调用之后的代码,以便在显示消息之前不执行?

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

我查看了 .when 和 deferred.then ,但这似乎不起作用。

4

2 回答 2

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() {}
 }); 

之前没有使用过这个插件,所以不确定你是否会这样做onSave,或者onTick,但是如果你显示你的初始化代码,会更有帮助。onCaptureonLoad

于 2012-07-05T20:23:50.697 回答
0

一般来说,我使用 Promise 和诸如 $.when() 之类的东西来协调诸如 AJAX 调用或动画之类的异步事物。但事实上,这几乎就像它是异步的一样,这让我很惊讶。

不过,我有一个建议。您可以在第一次调用后循环 $('#savepicmessage').html() 以设置它并测试返回的内容吗?也许一旦返回的值与您尝试设置的值匹配,那么您可能会使用网络摄像头功能,并且您的消息将在调用网络摄像头之前对用户可见。

于 2012-07-05T21:15:25.973 回答