Tengo un ejemplo de código en este formato:
someFunction(data) .then(response => { return response.text(); }).then(text => { console.log(text) }).catch(err => { console.error(err) });Quiero meter esto en mi propia función y llamarlo a través de mi código.
let result = await callSnippet(myData);Esto es lo que he estado haciendo... ¿Es esta la mejor manera? ¿Debería usar una promesa aquí?
async callSnippet(data) { let response = null await someFunction(data) .then( d=> { return d.text(); }) .then( d=> { response = {success:true, result:d }; }) .catch( d=> { response = {success:false, result:d }; }) return response; }No debería usar await y .then() . Lo que debes hacer es:
async callSnippet(data) { let response = null; try{ var d = await someFunction(data).text(); response = {success: true, result: d}; } catch(e){ response = {success: false, result: e}; } return response; } La palabra clave await recupera el valor de una Promise , por lo que no puede usar .then() en ese valor. Sin embargo, puede lograr la misma funcionalidad utilizando una sentencia try...catch .
Por lo general, si está esperando para esperar cosas, esperaría cada paso y no lo usaría.
async callSnippet(data) { try { const response = await someFunction(data); const text = await response.text(); return { success: true, result: text }; } catch (e) { return { success: false, result: e }; } }