3

jquery で遅延オブジェクトを把握しようとしていますが、問題が発生し続けています。基本的に、関数 1 の結果が 2 番目の関数のロジックを指示する一連の関数を実行したいと考えています。

どこかでパイプメソッドを呼び出す必要があるのか​​、それとも単に then() を使用する必要があるのか​​ はわかりませんが、どちらにしても失敗し続けます。最初の関数を見ると、2 番目の関数に渡したい data という名前のオブジェクトがあります。

 function run() {
    var data1 = {};
    var data2 = {};

    var body = $('body');

    $.when(first()).then(second()).done(constructData);

    function first() {
        var d = new $.Deferred();



        var data = {} //arbitrary data set that i want to send to second

        data.message = 'first message';
        data.id = 1234;

        body.append('First done');

        //return data object? add it to the resolve method?
       d.resolve();
    }

    function second(data) { //how do I get this data object?

        var d = new $.Deferred();


        body.append('Data from first:');

         body.append('Second done');

        d.resolve();
    }
    function constructData() {

    }

}
4

1 に答える 1

6

これはあなたの例の単純化されたライブデモです: http://jsfiddle.net/L96cD/

コードに欠けているもの:

1/ 2 番目の関数の引数を解決に渡す必要があります。

d.resolve(data);

2/ 遅延を返す必要があります:

return d;

注: 実際には、解決される前に deferred を返します (名前の由来)。また、deferred は ajax 呼び出しなどのいくつかのメソッドに組み込まれています。

于 2013-03-01T06:25:56.947 に答える