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

时间:2019-06-18 04:00:17

标签: javascript

假设我具有以下功能getData

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

如何将getData转换为阻塞函数,以使refreshPage仅在完成getData中的ajax之后被调用?

data = getData(..)
refreshPage()

请注意:我不想将refreshPage传递到getData内的ajax回调中

好的...这是我尝试过的并且似乎可以正常工作的情况:

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

4 个答案:

答案 0 :(得分:3)

function getData = (param) => {
    // jquery
    return $.ajax(...);
}

async test() {
    var x = await getData()
    console.log(x)
}

答案 1 :(得分:1)

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

getData().done(() => refreshPage())
// or
getData().done(refreshPage)

答案 2 :(得分:1)

您可以尝试以下操作:

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

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

答案 3 :(得分:0)

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

getData = (param) => {
    return new Promise(function(resolve, reject) {
   }
}

然后在ajax中完成操作 在那叫resolve(data)