Java Script Promise

50 %
50 %
Information about Java Script Promise

Published on March 4, 2014

Author: alokguha



Javascript Promises Alok Guha

JS Functions • Functions are first class citizens in JavaScript • Functions can take functions as arguments and call them when they are done.

First-class functions function sqr(x) { return x * x; } // a function may be assigned to a variable var func = sqr; // a function may have properties or be a property func.doubleMe = function (x) { return x + x; }; // a function may be used as a parameter [1, 2, 3].map(func.doubleMe); OR [1, 2, 3].map(func);

First-class functions function calculate(config){ //choose a function based on ref data return config.flag ? sqr : cube; } function sqr(x){ return x*x; } function cube(x){ return sqr(x)*x; }

Callbacks • Callback functions are derived from a programming paradigm called functional programming.(At a simple and fundamental level, functional programming is the use of functions as arguments) fileSys.readFile("file1.txt", function (file1Content) { return file1Content; }); .

Is Javascript really Async ? • All of the JavaScript engines including V8 Engine are single-threaded. • But all I/O is evented and asynchronous It is possible via the EventLoop.

Event Loops • An entity that handles and processes external events and converts them into callback invocations • Every asynchronous operation adds itself to the EventLoop Event Loops

How it works ?

Promise “A declaration or assurance that one will do something or that a particular thing will happen” • A Promise can be – Pending – Fulfilled – Rejected

JS Promise • A Promise is an object that represents a onetime event, typically the outcome of an async task like an AJAX call. • At first, a Promise is in a pending state. Eventually, it’s either resolved or rejected. • Once a Promise is resolved or rejected, it’ll remain in that state forever, and its callbacks will never fire again

How to promise ? var promise = new Promise(function(resolve, reject){ // do a thing, possibly async, then… if (/* everything turned out fine */) { resolve("Stuff worked!"); } else { reject(Error("It broke")); } });

Lets promise.. var num = 4; var simpleSqrPromise = new Promise(function(resolve, reject){ resolve(num*num); reject(); }); //execute it simpleSqrPromise.then(function(data){ console.log("worked "+data); }).catch(function(err){ console.log(err);});

Simple Functional Transform var user = getUser(); var userName =; // becomes var userNamePromise = getUser().then(function (user) { return; });

Simple coding path • Can we code a Promise which parses JSON ? And ensure its value for next operation..

Do you know them ?

Consider this ;/

Callbacks are hell :D • They are literally the simplest thing that could work. • But as a replacement for synchronous control flow, they s**k. • There’s no consistency in callback APIs. • There’s no guarantees. • We lose the flow of our code writing callbacks that tie together other callbacks. • We lose the stack-unwinding semantics of exceptions, forcing us to handle errors explicitly at every step.

Now see this.. someCall(promisedStep1) .then(promisedStep2) .then(promisedStep3) .then(promisedStep4) .then(function(value4){ // do something }) .done();

Promise Guarantees promiseForResult.then(onFulfilled, onRejected); • Only one of onFulfilled or onRejected will be called. • onFulfilled will be called with a single fulfillment value (⇔ return value). • onRejected will be called with a single rejection reason (⇔ thrown exception). • If the promise is already settled, the handlers will still be called once you attach them. • The handlers will always be called asynchronously.

JS Promise frameworks • Jquery Promise • When • Q • A+ • JSPromise Etc..

References • • • • • •  .. .. .. .. ..


Add a comment

Related presentations

Related pages

Asynchronous Programming in JavaScript with “Promises ...

Asynchronous patterns are becoming more common and more important to moving web programming forward. They can be challenging to work with in ...
Read more

JavaScript Promises: There and back again - HTML5 Rocks

Follow the green lines for promises that fulfill, or the red for ones that reject. JavaScript exceptions and promises. Rejections happen when a promise is ...
Read more


Promises help you naturally handle errors, ... (i.e. you can implement them in pure JavaScript and use them to wrap existing asynchronous operations). ...
Read more

Promise - JavaScript | MDN

Das Promise-Objekt wird für asynchrone Berechnungen verwendet. Ein Promise kann sich in einem von drei Zuständen befinden:
Read more

An Overview of JavaScript Promises - SitePoint

An Overview of JavaScript Promises. Sandeep Panda . December 23, 2013. ... But having native support for Promises in JavaScript is really amazing.
Read more

Promise - JavaScript | MDN - Mozilla Developer Network

The Promise object is used for deferred and asynchronous computations. A Promise represents an operation that hasn't completed yet, but is expected in the ...
Read more

What’s so great about JavaScript Promises? - Parse Blog

tl;dr - The Parse JavaScript SDK now returns jQuery-compatible Promises from most asynchronous methods. Read on to learn what that means. "Promises" represent
Read more

Write Better JavaScript with Promises - David Walsh ...

You've probably heard the talk around the water cooler about how promises are the future. All of the cool kids are using them, but you don't see what makes ...
Read more

JavascriptPromise - Martin Fowler

In Javascript, promises are objects which represent the pending result of an asynchronous ... There are various forms of promises in javascript, ...
Read more

JavaScript Promises - Shawn Wildermuth's Blog

Because many libraries are starting to take on the promise pattern, handling asynchronous operations should be easier no matter what code you're writing (e ...
Read more