$(document).ready(function(){
// Global function (will be include in any HTML file)
function m3_result(size_1, size_2, size_3){
$.get('http://www.google.com', function(data){
return data;
});
}
// Another function
function calculate(){
var size_1 = parseFloat($('#add_document_form #size_1').val());
var size_2 = parseFloat($('#add_document_form #size_2').val());
var size_3 = parseFloat($('#add_document_form #size_3').val());
var ax = m3_result(size_1, size_2, size_3);
alert(ax); // Here ax return: UNDEFINED
}
// Run
calculate();
});
结果是“未定义”,但我希望calculate()等待m3_result()执行。我看到,当我添加$ .get()时,问题就出现了,但它需要......
我一直在搜索callback()之类的函数,但是没有一个符合我的需要,或者我只是没有把它放好。 任何帮助都将受到高度赞赏,谢谢。
GET url将是localy,元素ID也可以。
答案 0 :(得分:4)
您无法从异步函数返回结果,而是可以返回 promise 以便稍后提供该值,因为它发生的是jqXHR
对象返回的$.get
:
function m3_result() {
return $.get(...)
}
并在计算中做同样的事情:
function calculate() {
...
return m3_result(...);
}
然后等待结果,该结果将作为参数传递给使用.done
函数注册的回调:
calculate().done(function(result) {
alert(result);
});