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

Bri*_*ian 2 javascript jquery deferred jquery-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() {

    }

}
Run Code Online (Sandbox Code Playgroud)

Chr*_*phe 6

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

您的代码中缺少什么:

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

d.resolve(data);
Run Code Online (Sandbox Code Playgroud)

2 /你需要退还延期:

return d;
Run Code Online (Sandbox Code Playgroud)

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