Javascript 在jquery延迟对象之间发送数据
我试图抓住jquery中的延迟对象,但一直在遇到麻烦。基本上,我有一系列我想要运行的函数,其中函数1的结果决定了第二个函数中的逻辑 我不确定是否必须在某个地方调用管道方法,或者只使用then(),但无论哪种方式,我都会失败。如果你看第一个函数,有一个名为data的对象,我想传递给第二个Javascript 在jquery延迟对象之间发送数据,javascript,jquery,jquery-deferred,deferred,Javascript,Jquery,Jquery Deferred,Deferred,我试图抓住jquery中的延迟对象,但一直在遇到麻烦。基本上,我有一系列我想要运行的函数,其中函数1的结果决定了第二个函数中的逻辑 我不确定是否必须在某个地方调用管道方法,或者只使用then(),但无论哪种方式,我都会失败。如果你看第一个函数,有一个名为data的对象,我想传递给第二个 function run() { var data1 = {}; var data2 = {}; var body = $('body'); $.when(first()).
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/您需要传入解析第二个函数的参数:
d.resolve(data);
2/您需要退回延期付款:
return d;
注意:在实践中,您将在解析延迟之前返回延迟(因此得名)。此外,延迟是在一些方法(如ajax调用)中构建的