3

私がやろうとしているのは、ajaxを介した2つの同時画像ロードが実行されたときに何らかのアクションを発生させることです。これを行うために、画像の読み込みが完了したときに解決されるカスタム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で試すことができます。

実用的な例を含むEricHyndsの投稿を参照として使用しましたが、まだ機能していません。何か案は?

4

1 に答える 1

3

あなたは$.when正しく使用していますが、次のようにメソッドを呼び出そうとしますresolve:

dfd.resolve;

他の一部の言語とは異なり、JavaScript ではメソッド呼び出しで括弧を省略できません。それらを追加するだけで、コードが正しく機能します!

dfd.resolve();
于 2011-11-30T07:58:19.670 に答える