函数中的 js 函数并等待返回值

js function inside function and wait for return value

本文关键字:函数 等待 返回值 js      更新时间:2023-09-26
$(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 将是本地的,元素 ID 也可以。

你不能从异步函数返回结果,而是可以返回一个承诺,稍后提供该值,这恰好是$.get返回的jqXHR对象:

function m3_result() {
     return $.get(...)
}

并在计算中执行相同的操作:

function calculate() {
    ...
    return m3_result(...); 
}

然后等待结果,该结果将作为参数传递给使用 .done 函数注册的回调:

calculate().done(function(result) {
    alert(result);
});