我已经能够实现一个延迟对象,但我现在正试图从第二个函数中的第一个函数访问一个值。
我不确定我是否只是不理解我应该在functionOne()
中返回什么,或者是否延迟对象不是以这种方式工作的。
如何在第二个功能中访问functionOne()
getJSON()
的结果?
function functionOne(x, y) {
var r = $.Deferred();
$.getJSON("/my_path", {
k1: x,
k2: y,
format: 'json'
}, function (results) {
});
setTimeout(function () {
r.resolve();
}, 2500);
return r;
}
$(document).ready(function () {
functionOne(x, y).done(function (results) {
// how do i access keys from functionOne's getJSON results?
var myVar1 = results.great_key_1;
var myVar2 = results.great_key_2;
});
});
答案 0 :(得分:2)
只需返回$.ajax
function functionOne(x, y) {
return $.getJSON("/my_path", {
k1: x,
k2: y,
format: 'json'
});
}
您的版本有点反模式,但要看到它的工作原理,您需要将ajax结果传递给resolve()
。我只是展示了这个,因为你实施了延迟,并且能够看到延迟的全部效果。否则你应该真的使用我的第一个版本
function functionOne(x, y) {
var r = $.Deferred();
$.getJSON("/my_path", {
k1: x,
k2: y,
format: 'json'
}, function (results) {
setTimeout(function () {
r.resolve(results);// resolve with data
}, 2500);
});
return r.promise;
}