Come posso annullare una promessa senza rimuovere l'elemento dal DOM?Annullamento di una promessa differita in jQuery
ho corse di questo codice:
$("#box")
.delay(2000)
.show("slow")
.delay(2000)
.promise()
.then(function(){log("Done");});
Dopo questo, c'è un modo per annullare la promessa? Sia clearQueue()
e stop(true)
non hanno funzionato, perché non è un'animazione che sto tentando di annullare. Ho visto che remove()
dovrebbe farlo ... ma voglio solo fermare la promessa, non rimuovere l'intero elemento.
Se si ha solo l'oggetto promessa (e nessun accesso all'originale differito), allora dovrebbe essere impossibile farlo. L'idea di una promessa è quella di essere in grado di ascoltare il differito di essere risolto o rifiutato, senza la funzionalità di risoluzione/rifiuto. Quello che puoi fare è creare un wrapper di promessa che esponga le funzioni originali di promessa, ma tutte le callback sono vincolate con una funzione wrapping che ascolta un qualche tipo di flag per evitare di attivare la callback se il differito viene contrassegnato come cancellato. –
quasi, in realtà vuoi solo creare un rinvio e rifiutarlo o risolverlo manualmente come meglio credi. –