Ya he estado usando las funciones ECMAScript 6 y ECMAScript 7 (gracias a Babel) en mis aplicaciones, tanto móviles como web.
El primer paso obviamente fue a los niveles de ECMAScript 6. Aprendí muchos patrones asincrónicos, las promesas (que son realmente prometedoras), los generadores (no estoy seguro de por qué el símbolo *), etc. De estos, las promesas se adaptaron bastante bien a mi propósito. Y los he estado usando mucho en mis aplicaciones.
Aquí hay un ejemplo / pseudocódigo de cómo he implementado una promesa básica:
var myPromise = new Promise(
function (resolve,reject) {
var x = MyDataStore(myObj);
resolve(x);
});
myPromise.then(
function (x) {
init(x);
});
Con el paso del tiempo, me encontré con las características de ECMAScript 7, y una de ellas es ASYNC
y AWAIT
palabras clave / funciones. Estos en conjunto hacen grandes maravillas. He comenzado a reemplazar algunas de mis promesas con async & await
. Parecen agregar un gran valor al estilo de programación.
Nuevamente, aquí hay un pseudocódigo de cómo se ve mi función async, await:
async function myAsyncFunction (myObj) {
var x = new MyDataStore(myObj);
return await x.init();
}
var returnVal = await myAsyncFunction(obj);
Dejando a un lado los errores de sintaxis (si los hay), ambos hacen exactamente lo mismo, es lo que siento. Casi he podido reemplazar la mayoría de mis promesas con async, awaits.
¿Por qué se necesita async, await cuando las promesas hacen un trabajo similar?
¿Async, await resuelve un problema mayor? ¿O fue solo una solución diferente para devolver la llamada al infierno?
Como dije anteriormente, puedo usar promesas y async, a la espera de resolver el mismo problema. ¿Hay algo específico que async aguarde resuelto?
Notas adicionales:
He estado usando async, awaits y promesas en mis proyectos React y módulos Node.js extensamente. React especialmente ha sido un pájaro temprano y adoptó muchas características de ECMAScript 6 y ECMAScript 7.