Soy consciente de que la respuesta inmediata será usar promesas para el siguiente problema. Sin embargo, he mirado todos los ejemplos que puedo y nada parece ser legible para mí. La mayoría se realiza a través de ejemplos HTML, que no entiendo. Publicaciones similares aquí tienen una gran cantidad de argumentos sobre qué sintaxis es apropiada, lo que aumenta la confusión. Entonces, muéstrame cómo podría usar una promesa para hacer lo siguiente o si otra solución es mejor.
Me gustaría que una función verifique si el caché está disponible y, si no, lo reiniciará:
function valData(){ if (arrOfNames || arrOfRanges == null){ initializeGame(); Logger.log('Game Initialized') } else { Logger.log('Data Available') } };Soy consciente de que esto es probablemente descuidado, pero quédate conmigo
Esta función funciona según lo previsto, al igual que lo siguiente:
function reqVal(valname,x){ if (x == 0){ var nameArr = convToString(arrOfNames); var valIndex = nameArr.indexOf("" + valname) return arrOfRanges[valIndex]; } else { var nameArr = convToString(arrOfNames); var valIndex = nameArr.indexOf("" + valname) return valIndex; } };Nuevamente, muy, muy descuidado, pero limpiaré las cosas una vez que pueda hacer que funcionen.
Ambos scripts funcionan bien por sí solos y devuelven lo que necesito. Pero si tengo un tercer script:
function test(){ valData(); var valNum = reqVal('curHP', 0); var valIndex = reqVal('curHP',1) var newNum = valNum - 5; Logger.log(valNum) Logger.log(newNum) Logger.log(valIndex) }; La función reqVal() falla debido a la naturaleza asíncrona de GAS y la Caché ha expirado, pero la función valData() tiene éxito y produce la matriz necesaria. Entonces, sé que necesito agregar una promesa en valData() que la función reqVal() puede leer, pero no tengo idea de cómo formatear eso, ya que los ejemplos que he visto no están claros.