Comments (8)
@bisubus no particular problem, totally unrelated to inheritance. It's just I needed cancellation for certain patterns related, but not strictly coupled to React (like handling race conditions etc).
I've made my own lib for that: https://github.com/slorber/awesome-imperative-promise
from p-cancelable.
@sindresorhus I finally was able to find back this React blog post explaining what I want to do: https://reactjs.org/blog/2015/12/16/ismounted-antipattern.html
Also, note that this lib does not work with React Native, only in prod mode. I got errors, as far as I remember it was due to Object.setPrototypeOf(PCancelable.prototype, Promise.prototype);
I'm going to use the solution in the blog post instead, just wanted to let you know
from p-cancelable.
Promises are eager, so it has already started by the time you pass it to PCancelable.fromPromise
. That's why it must be wrapped in a function.
Why are you even using this module if you don't intend to handle the cancelation? :)
from p-cancelable.
from p-cancelable.
I'm using it mostly to disable then callbacks
What do you mean by that? Example?
from p-cancelable.
from p-cancelable.
I'm using it mostly to disable then callbacks, not to tear down resources.
Btw, there are also cases we could not only disable then callbacks but also tear down resources.
For example, ajax, we could call xhr.abort()
before the server responds when canceling a Promise.
from p-cancelable.
@sindresorhus Can we reopen the issue? It's legit IMO. If you need to wrap existing promise, you really do.
My primary case for cancelable promises are promise-based APIs like HTTP requests. PCancelable alone would feel like promise constructor antipattern to me here:
const fromPromise = (promise, onCancel) => (
new PCancelable((resolve, reject, addCancelHandler) => {
addCancelHandler(onCancel);
promise.then(resolve, reject);
});
);
fromPromise(
fetch(url, { signal: controller.signal }),
() => controller.abort()
);
Notice that executor param name in documentation is misleading; on
implies that it's a handler, while it's a function that registers a handler. Could be addCancelHandler
or so.
@slorber Can you elaborate what was the problem with React in your case? I believe I had issues with Promise inheritance before.
from p-cancelable.
Related Issues (19)
- Decorator
- Pass the onCancel callback as the last parameter instead of the first HOT 1
- React-Native: Error on module init HOT 1
- Polyfill ? HOT 1
- `onCancel` handlers should be called immediately if the promise was cancelled already HOT 8
- Passing cancellation reason to cancel handler HOT 5
- TypeScript types don't work for calling .then on a PCancelable promise HOT 4
- Not compatible with global Bluebird promises HOT 5
- Utility static function to convert executor into a PCancelable HOT 2
- Improve the message error when attaching `onCancel` after the promise settled HOT 1
- About `AbortController` HOT 2
- Convert abortable Promise-returning functions to cancelable promises
- Node Engine Lock HOT 1
- isCanceled is not set to true when shouldReject is set to false and promise is rejected in onCancel HOT 3
- Willing to add p-signal to the related section? HOT 7
- 【Discussion】Object.setPrototypeOf(PCancelable.prototype, Promise.prototype) HOT 1
- Thenable isn't cancelable anymore HOT 2
- How to use this with p-lazy? HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from p-cancelable.