Tengo tres funciones javascript.
rerender(callbackOptional); releaseEMail_inFolders(eMailId, currentEMailFolderId, callbackOptional); attachEMail_inFolders(eMailId, futureEMailFolderId, callbackOptional);
Tengo estas variables:
El correo electrónico 123 se encuentra actualmente en la carpeta 100. Me gusta liberar el correo electrónico de la carpeta 100 y me gusta adjuntar el correo electrónico a las carpetas 101 y 102. Luego volver a procesar().
Normalmente escribiría:
attachEMail_inFolders(123, 101); attachEMail_inFolders(123, 102); releaseEMail_inFolders(123, 100); rerender();
Ahora traté de usar las devoluciones de llamada en una matriz ( chain
) usando este código:
var chain=[]; chain.push(rerender); chain.push(()=>releaseEMail_inFolders(eMailId, currentEMailFolderId, chain.pop())); for(var i =0; i < futureEMailFolderIds.length;i++) { var v = futureEMailFolderIds[i]; if (typeof v == 'number'){ chain.push(()=>{ console.log(v); attachEMail_inFolders(eMailId, v, chain.pop()); }); } } chain.pop()();
Lamentablemente recibo este mensaje de error en Chrome:
null Uncaught futureEMailFolderId of attachEMail_inFolders is undefined!
Pero en firefox me sale este mensaje:
102 101
¿Por qué Chrome no permite usar variables exclusivamente de este alcance para usarse dentro de lamdas/funciones?
Era de hecho un problema de alcance. Lamdas ignora vars (solo en Chrome).
Modifiqué el código para evitar lamdas pero uso funciones.