bindCallbackInternals.js 3.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. import { __read, __spreadArray } from "tslib";
  2. import { isScheduler } from '../util/isScheduler';
  3. import { Observable } from '../Observable';
  4. import { subscribeOn } from '../operators/subscribeOn';
  5. import { mapOneOrManyArgs } from '../util/mapOneOrManyArgs';
  6. import { observeOn } from '../operators/observeOn';
  7. import { AsyncSubject } from '../AsyncSubject';
  8. export function bindCallbackInternals(isNodeStyle, callbackFunc, resultSelector, scheduler) {
  9. if (resultSelector) {
  10. if (isScheduler(resultSelector)) {
  11. scheduler = resultSelector;
  12. }
  13. else {
  14. return function () {
  15. var args = [];
  16. for (var _i = 0; _i < arguments.length; _i++) {
  17. args[_i] = arguments[_i];
  18. }
  19. return bindCallbackInternals(isNodeStyle, callbackFunc, scheduler)
  20. .apply(this, args)
  21. .pipe(mapOneOrManyArgs(resultSelector));
  22. };
  23. }
  24. }
  25. if (scheduler) {
  26. return function () {
  27. var args = [];
  28. for (var _i = 0; _i < arguments.length; _i++) {
  29. args[_i] = arguments[_i];
  30. }
  31. return bindCallbackInternals(isNodeStyle, callbackFunc)
  32. .apply(this, args)
  33. .pipe(subscribeOn(scheduler), observeOn(scheduler));
  34. };
  35. }
  36. return function () {
  37. var _this = this;
  38. var args = [];
  39. for (var _i = 0; _i < arguments.length; _i++) {
  40. args[_i] = arguments[_i];
  41. }
  42. var subject = new AsyncSubject();
  43. var uninitialized = true;
  44. return new Observable(function (subscriber) {
  45. var subs = subject.subscribe(subscriber);
  46. if (uninitialized) {
  47. uninitialized = false;
  48. var isAsync_1 = false;
  49. var isComplete_1 = false;
  50. callbackFunc.apply(_this, __spreadArray(__spreadArray([], __read(args)), [
  51. function () {
  52. var results = [];
  53. for (var _i = 0; _i < arguments.length; _i++) {
  54. results[_i] = arguments[_i];
  55. }
  56. if (isNodeStyle) {
  57. var err = results.shift();
  58. if (err != null) {
  59. subject.error(err);
  60. return;
  61. }
  62. }
  63. subject.next(1 < results.length ? results : results[0]);
  64. isComplete_1 = true;
  65. if (isAsync_1) {
  66. subject.complete();
  67. }
  68. },
  69. ]));
  70. if (isComplete_1) {
  71. subject.complete();
  72. }
  73. isAsync_1 = true;
  74. }
  75. return subs;
  76. });
  77. };
  78. }
  79. //# sourceMappingURL=bindCallbackInternals.js.map