运行get_style_guide_version()
时,控制台将返回预期的数据,但浏览器中打印的内容为undefined
。那是为什么?
function get_style_guide_version() {
var jqxhr = $.getJSON( '/package.json', function() {
})
.done(function(data) {
output = data.version;
console.log(output);
return output;
});
}
$( document ).ready(function() {
document.write(get_style_guide_version());
});
答案 0 :(得分:3)
代码有两个问题:
return
语句位于ajax请求的.done()
函数内。get_style_guide_version
完成之前肯定没有完成。如果您使用document.write部分而不是console.out,它将按预期工作。
答案 1 :(得分:2)
在文档就绪功能上,您正在尝试编写运行异步进程的get_style_guide_version()的结果
因此该函数在异步返回之前完成,因此无法工作。
你应该做的是另一个手动调用的函数,它写入文档并在.done promise发生时被调用。
function get_style_guide_version() {
var jqxhr = $.getJSON( '/package.json', function() {
})
.done(function(data) {
output = data.version;
console.log(output);
write(output);
});
}
$( document ).ready(function() {
document.write(get_style_guide_version());
});
function write(val){
document.write(val);
}
或
function get_style_guide_version(done) {
var jqxhr = $.getJSON( '/package.json', function() {
})
.done(function(data) {
output = data.version;
console.log(output);
done(output);
});
}
$( document ).ready(function() {
document.write(get_style_guide_version(function(val){
document.write(val);
}));
});
答案 2 :(得分:0)
简单的答案是,它是一个异步请求,函数不会等待成功事件发生..
答案 3 :(得分:0)
当您编写return output
时,您将返回done()
回调。不在get_style_guide_version
方法中。
您应该使用另一个回调来在浏览器中编写output
。