説明なし

when.js 988B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. "use strict";
  2. const { JSDOM } = require( "jsdom" );
  3. const { window } = new JSDOM( "" );
  4. const jQuery = require( "../../" )( window );
  5. module.exports.deferred = () => {
  6. let adopted, promised;
  7. return {
  8. resolve: function() {
  9. if ( !adopted ) {
  10. adopted = jQuery.when.apply( jQuery, arguments );
  11. if ( promised ) {
  12. adopted.then( promised.resolve, promised.reject );
  13. }
  14. }
  15. return adopted;
  16. },
  17. reject: function( value ) {
  18. if ( !adopted ) {
  19. adopted = jQuery.when( jQuery.Deferred().reject( value ) );
  20. if ( promised ) {
  21. adopted.then( promised.resolve, promised.reject );
  22. }
  23. }
  24. return adopted;
  25. },
  26. // A manually-constructed thenable that works even if calls precede resolve/reject
  27. promise: {
  28. then: function() {
  29. if ( !adopted ) {
  30. if ( !promised ) {
  31. promised = jQuery.Deferred();
  32. }
  33. return promised.then.apply( promised, arguments );
  34. }
  35. return adopted.then.apply( adopted, arguments );
  36. }
  37. }
  38. };
  39. };