Estoy tratando de usar una llamada de recuperación asíncrona para obtener datos del servidor, pero el resultado parece una función asíncrona vacía. ¿Qué estoy haciendo mal?
este es mi codigo
function initAutoComplete (selector, params = []) { let config = { selector: selector, data: { src: async () => { try { let myurl = `/component/get_states?country_id=64`; // http://localhost const response = await fetch(myurl) const source = await response.json(); console.log('source', source); // ==> this doesn't even appear in the console log return source; } catch (err) { return err; } }, keys: ["state_name"], cache: true, }, }; console.log('config', config.data); return config; } const asd = initAutoComplete('#state_name'); console.log('asd', asd.data); este es el resultado en las herramientas de desarrollo 
aunque cuando usé cartero para probar la url, muestra los datos como se esperaba
[ { "id": "17", "state_name": "Bali", "country_name": "Indonesia" }, { "id": "16", "state_name": "Banten", "country_name": "Indonesia" }, { "id": "7", "state_name": "Bengkulu", "country_name": "Indonesia" }, ]Su código muestra llamar a initAutoComplete() , pero todo lo que hace es definir un objeto de config que contiene una función data.src() , pero nada de lo que muestra llama a esa función.
Entonces, según este código, esa función nunca se ejecuta y nunca debería ejecutarse. La función ha sido definida, pero no llamada.
Usarías esto:
const asd = initAutoComplete('#state_name'); asd.data.src().then(result => { console.log(result); }).catch(err => { console.log(err); }); para llamar realmente a esa función async .
Además, return err es probablemente la forma incorrecta de manejar errores en su función src() . QUIERES la promesa de que la función async vuelve a rechazar cuando recibes un error. Como lo está haciendo ahora, es bastante molesto para la persona que llama notar la diferencia entre un resultado y una condición de error, ya que solo está devolviendo un valor en ambos sentidos. La persona que llama probablemente tendría que verificar el valor resuelto para ver si fue una instancia de Error para discernir si el resultado fue un error o no.
Si elimina el try/catch en su función src() , entonces el rechazo ocurrirá automáticamente, lo que probablemente sea lo que desea.