* added pumlid where it was missing and possible * removed pumlid where it generated a bad image * regenerated some incorrect puml's * added 'left to right direction' puml prefix to some diagrams to improve the automatic layouting
layout, title, folder, permalink, pumlid, categories, tags
layout | title | folder | permalink | pumlid | categories | tags | ||||
---|---|---|---|---|---|---|---|---|---|---|
pattern | Promise | promise | /patterns/promise/ | DOqv4i8m301xNW4FYDLJvIl2rYHYBDcZWtmVKr3jDZkxUw15IhyzM6lFHcdzVaPCVm8ONkNWEFELJbQ71ccKEWIuvuKhXJT-S6laVEWsCO9C7GHz2KmRmav0KVzUqgJCtsydROjV | Concurrency |
|
Also known as
CompletableFuture
Intent
A Promise represents a proxy for a value not necessarily known when the promise is created. It allows you to associate dependent promises to an asynchronous action's eventual success value or failure reason. Promises are a way to write async code that still appears as though it is executing in a synchronous way.
Applicability
Promise pattern is applicable in concurrent programming when some work needs to be done asynchronously and:
- code maintainablity and readability suffers due to callback hell.
- you need to compose promises and need better error handling for asynchronous tasks.
- you want to use functional style of programming.
Real world examples
Related Patterns
- Async Method Invocation
- Callback