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)
以下是您的示例的简化现场演示:http://jsfiddle.net/L96cD/
您的代码中缺少什么:
1 /你需要传入解决第二个函数的参数:
d.resolve(data);
Run Code Online (Sandbox Code Playgroud)
2 /你需要退还延期:
return d;
Run Code Online (Sandbox Code Playgroud)
注意:在实践中,您将在解析之前返回延迟(因此名称).此外,延迟是在一些方法中构建的,如ajax调用.