首页 > 解决方案 > 我们如何使用异步函数来获取 api 数据?

问题描述

我在函数中从 api 获取数据时遇到问题,它收集数据较晚,而不是等待函数完成执行并跳过它并继续执行下一行。

function getQ(mid){
                $.ajax({
                url : "http://localhost:8080/modules/"+ mid ,
                type : "get"  , 
                dataType : "json" , 
                success : function( response , status , http ) {
                    $.each( response , function( index , item ){
                        var s =  item.q;
                        var v = JSON.stringify(item.qIDfromDB)
                        console.log(str +": " );
                        dbAnswers.push({ text: s, value: v});
                    }); 
                    console.log(dbAnswers);
                },
                error : function( http , status , error ) {
                    alert( 'Some Error Occured : ' + error );
                }           
               });              
             }

标签: javascriptasync-await

解决方案


您可以使用 async/await 如下方式:

function getData(ajaxurl) { 
  return $.ajax({
    url: ajaxurl,
    type: 'GET',
  });
};

async function test() {
  try {
    const res = await getData('https://api.icndb.com/jokes/random')
    console.log(res)
  } catch(err) {
    console.log(err);
  }
}

test();

推荐阅读