执行前延迟

时间:2014-11-10 13:40:42

标签: javascript

我在这里有这个JavaScript:

$('#takePicturebtn').click(function()
  {
    var injectImage = function(id, url) {
      var z = document.getElementById(id);
      z.src=url;  
      }; 
    injectImage("pic", $.getJSON('/picture'));
  });

$.getJSON('/picture')需要一些时间才能执行并返回图像链接。是否可以给出一些时间/延迟来执行然后继续进行该过程?

烧瓶功能:

@app.route("/picture")
    def picture():
        link = interact().ftpSession('/home/pi/AlarmwebNew/pictures/' + interact().grabPicture(), interact().grabPicture())
        return  jsonify(pictureLink=link)

3 个答案:

答案 0 :(得分:2)

一种方便的方法是将injectImage函数重新设计为接受(Promise)对象作为第二个参数而不是字符串。

var injectImage = function( id, promise ) {
    $.when( promise ).done(function( url ) { 
        var z = document.getElementById(id);
        z.src=url;  
    });    
}; 

答案 1 :(得分:1)

您必须使用回调。试试这个:

$('#takePicturebtn').click(function()
{
    $.getJSON('/picture', function(data) 
    {            
        var z = document.getElementById('pic');
        z.src=data.pictureLink;  
    }); 
});

答案 2 :(得分:0)

documentation中所述,有一些回调函数:

jQuery.getJSON( url [, data ] [, success ] )

所以就这样做:

$.getJSON('/picture', function(){
    alert('done reading json');
});