Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/372.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Javascript(AJAX)中,一个函数等待另一个函数_Javascript_Jquery_Ajax_Asynchronous_Async Await - Fatal编程技术网

在Javascript(AJAX)中,一个函数等待另一个函数

在Javascript(AJAX)中,一个函数等待另一个函数,javascript,jquery,ajax,asynchronous,async-await,Javascript,Jquery,Ajax,Asynchronous,Async Await,我试图找到一种方法,使一个函数保持不变,并且仅当其中的异步函数(AJAX调用)完成时才返回其输出(保持流) 在这个点击事件中,“prepareEstimates”函数调用另一个函数,该函数对API进行AJAX调用。最重要的是,在这个函数完成所有工作(包括AJAX调用)之前,代码不会向前移动。因为它调用的是同一个API,所以我不能使用相同的数据同时调用两个API(API的问题超出了这个问题的范围) 然后,一旦这个prepareEstimates函数完成,它就应该向前推进,下一个prepareCus

我试图找到一种方法,使一个函数保持不变,并且仅当其中的异步函数(AJAX调用)完成时才返回其输出(保持流)

在这个点击事件中,“prepareEstimates”函数调用另一个函数,该函数对API进行AJAX调用。最重要的是,在这个函数完成所有工作(包括AJAX调用)之前,代码不会向前移动。因为它调用的是同一个API,所以我不能使用相同的数据同时调用两个API(API的问题超出了这个问题的范围)

然后,一旦这个prepareEstimates函数完成,它就应该向前推进,下一个prepareCustomEstimates函数与这个函数非常相似,它也会做同样的事情

function prepareEstimates() {

   // check if runAPI should be true or false

    if (runApi) {
        // make call here
        $.when(callAJAXFunction(path, dataForAPICalls)).done(function (result) {
          // Do other stuff with the result
        });
    }
};
这个callajax函数只返回一个AJAX调用

    // Invoke API call and get result
    return await $.ajax({
        url: url,
        type: "POST",
        dataType: "json",
        data: data,
        success: function (result) {
        },
        error: function () {
            console.log("error calling Api");
        }
    });
}
我试着使用promise、await和其他工具,但无论我怎么做,都无法让它起作用

最后,第一个AJAX调用被触发,紧接着第二个AJAX调用,在第一个调用完成之前

有什么建议吗


谢谢你,因为
prepareeestimates()必须使用承诺人这是否回答了您的问题?我如何在准备评估中使用承诺?我对承诺有点陌生
function prepareEstimates() {

   // check if runAPI should be true or false

    if (runApi) {
        // make call here
        $.when(callAJAXFunction(path, dataForAPICalls)).done(function (result) {
          // Do other stuff with the result
        });
    }
};
    // Invoke API call and get result
    return await $.ajax({
        url: url,
        type: "POST",
        dataType: "json",
        data: data,
        success: function (result) {
        },
        error: function () {
            console.log("error calling Api");
        }
    });
}