JSFiddle - React, Tailwind, and code Playground

by aliaksej

HTML

<button onclick="unsubscribe()">Unsubscribe</button>

JavaScript

function subscribeToPromise(promise, callback) {
	var isUnsubscribed = false;
  var handler = function (result, error) {
  	if (!isUnsubscribed) {
    	callback(result, error);
    }
  }
  promise.then(function (result) {
    handler(result);
  });
  promise.catch(function (error) {
  	handler(null, error);
  });
  
  return function unsubscribe() {
  	isUnsubscribed = true;
  }
}

var promise = new Promise(function (resolve, reject) {
	setTimeout(function () {
		reject(123);
  }, 5000);
});

unsubscribe = subscribeToPromise(promise, function (result, error) {
	console.log(result, error, 'from subscription');
});