Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

102
Vistas
Encadenamiento de promesas jQuery

Deseo llamar a dealCardSelectableAI() , hacer que chooseCards() , luego usar la salida para configurar un sistema observable.star.cardList system.star.cardList() , luego llamar a setCardName() . Una vez hecho todo esto, quiero que saveGame() .

Sin embargo, setCardName() no se completa antes de llamar a saveGame() , por lo que aparentemente no puedo insertarlo en mi deferredQueue a través de .then() .

Estoy usando jQuery debido a que trabajo en un entorno ES5.

 var setCardName = function (system, card) { var deferred = $.Deferred(); require(["cards/" + card[0].id], function (data) { var cardName = loc(data.summarize()); system.star.ai().cardName = cardName; deferred.resolve(); }); return deferred.promise(); }; var dealCardSelectableAI = function (win, turnState) { var deferred = $.Deferred(); // Avoid running twice after winning a fight if (!win || turnState === "end") { var deferredQueue = []; _.forEach(model.galaxy.systems(), function (system, starIndex) { if ( model.canSelect(starIndex) && system.star.ai() && system.star.ai().treasurePlanet !== true ) { deferredQueue.push( chooseCards({ inventory: inventory, count: 1, star: system.star, galaxy: game.galaxy(), addSlot: false, }).then(function (card) { system.star.cardList(card); deferredQueue.push(setCardName(system, card)); }) ); } }); $.when(deferredQueue).then(function () { deferred.resolve(); }); } else { deferred.resolve(); } return deferred.promise(); }; dealCardSelectableAI(false).then(function () { saveGame(game, true); });

Intenté resolver esto cambiando las llamadas de función para que setCardName() se encadenara siguiendo dealCardSelectableAI() . Sin embargo, depende de que se haya escrito system.star.cardList() , lo que en algunas circunstancias aún no se había hecho.

Dada la dependencia que system.star.cardList() tiene en chooseCards() , no puedo averiguar cómo asegurarme de que se haya escrito antes de llamar a setCardName() de una manera que bloquee saveGame() hasta que todo esté listo.

about 4 years ago · Juan Pablo Isaza
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda