如何将javascript ajax调用函数转换为async/await?

如何将javascript ajax调用函数转换为async/await?,javascript,Javascript,假设我有以下函数getData getData = (param) => { // jquery $.ajax(...).done(..) } 如何将getData转换为阻塞函数,以便refreshPage仅在getData中的ajax完成后才被调用 data = getData(..) refreshPage() 请注意:我不想在getData getData = (param) => { // jquery $.ajax(...).done(.

假设我有以下函数
getData

getData = (param) => {
    // jquery
    $.ajax(...).done(..)
}
如何将
getData
转换为阻塞函数,以便
refreshPage
仅在
getData
中的ajax完成后才被调用

data = getData(..)
refreshPage()
请注意:我不想在
getData

getData = (param) => {
    // jquery
    $.ajax(...).done(..)
}
好的。。。以下是我尝试过并似乎有效的方法:

getData = (param) => {
    // jquery
    return $.ajax(...).done(..)
}
getData.then(refreshPage())

您应该从get data方法返回一个承诺

getData = (param) => {
    return new Promise(function(resolve, reject) {
   }
}
然后,当事情在ajax中完成时
在那里调用
解析(数据)
您可以尝试以下操作:

getData = (param) => $.ajax(...).done(..)

getData().done(() => refreshPage())
// or
getData().done(refreshPage)
function getData (param)
{
   ...........       
   return new Promise((resolve, reject) =>{
        jQuery.ajax({...});
   });
}
...........

getData(param).then(()=>refreshPage());

getData
不能是阻塞函数,除非使AJAX同步(这是一个非常糟糕的主意)<如果包含函数是
async
(通过使
getData
返回承诺),则code>await getData(…)可以被设置为准阻塞。这就是你的意思吗?只要把它包装成一个
Promise
,当你得到数据时就解决了?@jhpratt把它包装成Promise没有任何意义,
$。ajax
已经返回了一个非常好的结果(假设
$
是jQuery)。而且没有提到jQuery,我也没有这样假设。从
承诺
异步
/
等待
的转换本身肯定有一百万次重复。对不起,忘了提到它是jquery请阅读评论。该方法已经返回了一个承诺。如果您已清除该承诺,请告诉我,或者我发布了正确的代码。这与我尝试的方法非常接近,我使用了
getData()。然后(…)
,我无法验证是否使用
wait getData()
,因为webpack会向我抛出错误。此答案和@Zlv Ben or的组合正在工作。