在jquery延迟对象之间发送数据

时间:2013-03-01 06:07:12

标签: javascript jquery jquery-deferred deferred

我正在尝试抓住jquery中的延迟对象,但仍然遇到麻烦。基本上我有一系列我想要运行的函数,其中函数1的结果决定了第二个函数中的逻辑。

我不确定我是否必须在某处调用管道方法或者只是使用then(),但无论如何我都会失败。如果你看第一个函数,就会有一个名为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() {

    }

}

1 个答案:

答案 0 :(得分:6)

以下是您的示例的简化实时演示:http://jsfiddle.net/L96cD/

您的代码中缺少什么:

1 /你需要传入解决第二个函数的参数:

d.resolve(data);

2 /你需要退回延期:

return d;

注意:在实践中,您将在解析之前返回延迟(因此名称)。此外,延迟是在一些方法中构建的,如ajax调用。