jQuery中使用延迟对象的$.when方法不起作用

3
我想要做的是,在两个同时通过ajax加载的图像加载完成时执行某些操作。为此,我创建了一个自定义的Deferred对象,当图像加载完成时将其解决。
<div id="i"></div>

$(document).ready(function() {
    $('#i').hide();
    var imgLoad = loadImgs();
    $.when(imgLoad).then(function() {
        $('#i').show('slow');
    });
});

function loadImgs() {
    var dfd = $.Deferred();

    var matrix = $.getJSON("https://graph.facebook.com/thematrixmovie");
    var pulp = $.getJSON("https://graph.facebook.com/pulpfiction");

    $.when(matrix, pulp).then(function(m, p) {
        mImg = '<img src=' + m[0].picture + '>';
        pImg = '<img src=' + p[0].picture + '>';
        $('#i').show().append(mImg + pImg);
        dfd.resolve;
    });
    return dfd.promise();
}

你可以在JSFiddle上尝试。

我使用了Eric Hynds的文章,包括一个工作示例作为参考,但仍然无法使其工作。有任何想法吗?

1个回答

3
您正在正确使用$.when,但是您尝试像这样调用resolve方法:
dfd.resolve;

与其他一些语言不同,JavaScript 不允许您省略方法调用中的括号。您只需要添加它们,您的代码就可以正常工作!

dfd.resolve();

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接