编程语言
首页 > 编程语言> > javascript-带有延迟的jQuery $.when不起作用

javascript-带有延迟的jQuery $.when不起作用

作者:互联网

我想做的是,当通过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();
}

您可以尝试使用on JSFiddle.

我已使用Eric Hynds post(包括working example)作为参考,但仍未使它起作用.有任何想法吗?

解决方法:

您正确地使用了$.when,但是您尝试像这样调用resolve方法:

dfd.resolve;

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

dfd.resolve();

标签:jquery-deferred,javascript,jquery
来源: https://codeday.me/bug/20191202/2085343.html