49
JavaScript IOUs Using async & await in your JavaScript

JavaScript IOUs - Smart Data · 2019-12-20 · Promises = IOU for Future Action AJAX Call Returning Data Access a User’s Webcam Resizing an Image. Morning Routine Make Coffee

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

Page 1: JavaScript IOUs - Smart Data · 2019-12-20 · Promises = IOU for Future Action AJAX Call Returning Data Access a User’s Webcam Resizing an Image. Morning Routine Make Coffee

JavaScript IOUsUsing async & await in your JavaScript

Page 2: JavaScript IOUs - Smart Data · 2019-12-20 · Promises = IOU for Future Action AJAX Call Returning Data Access a User’s Webcam Resizing an Image. Morning Routine Make Coffee

Who Am I?

Kris HatcherDevelopment Lead

4.5 years at Smart Data

9 years experience in JavaScript

I’ll let you know when I figure it out...

Page 3: JavaScript IOUs - Smart Data · 2019-12-20 · Promises = IOU for Future Action AJAX Call Returning Data Access a User’s Webcam Resizing an Image. Morning Routine Make Coffee

Overview

● Intro to Promises● async + await● Error Handling● Progression Example

Page 4: JavaScript IOUs - Smart Data · 2019-12-20 · Promises = IOU for Future Action AJAX Call Returning Data Access a User’s Webcam Resizing an Image. Morning Routine Make Coffee

async await

#devHumor

Page 5: JavaScript IOUs - Smart Data · 2019-12-20 · Promises = IOU for Future Action AJAX Call Returning Data Access a User’s Webcam Resizing an Image. Morning Routine Make Coffee

Promises = IOU for Future Action

● AJAX Call Returning Data

● Access a User’s Webcam

● Resizing an Image

Page 6: JavaScript IOUs - Smart Data · 2019-12-20 · Promises = IOU for Future Action AJAX Call Returning Data Access a User’s Webcam Resizing an Image. Morning Routine Make Coffee

Morning Routine

● Make Coffee● Drink Coffee● Cook Breakfast● Eat Breakfast

Start something, then come back when it’s done!

Page 7: JavaScript IOUs - Smart Data · 2019-12-20 · Promises = IOU for Future Action AJAX Call Returning Data Access a User’s Webcam Resizing an Image. Morning Routine Make Coffee
Page 8: JavaScript IOUs - Smart Data · 2019-12-20 · Promises = IOU for Future Action AJAX Call Returning Data Access a User’s Webcam Resizing an Image. Morning Routine Make Coffee
Page 9: JavaScript IOUs - Smart Data · 2019-12-20 · Promises = IOU for Future Action AJAX Call Returning Data Access a User’s Webcam Resizing an Image. Morning Routine Make Coffee
Page 10: JavaScript IOUs - Smart Data · 2019-12-20 · Promises = IOU for Future Action AJAX Call Returning Data Access a User’s Webcam Resizing an Image. Morning Routine Make Coffee

Browser APIs == Promises

Fetch()

PaymentRequest

GetUserMedia()

Web Animation API

Page 11: JavaScript IOUs - Smart Data · 2019-12-20 · Promises = IOU for Future Action AJAX Call Returning Data Access a User’s Webcam Resizing an Image. Morning Routine Make Coffee
Page 12: JavaScript IOUs - Smart Data · 2019-12-20 · Promises = IOU for Future Action AJAX Call Returning Data Access a User’s Webcam Resizing an Image. Morning Routine Make Coffee
Page 13: JavaScript IOUs - Smart Data · 2019-12-20 · Promises = IOU for Future Action AJAX Call Returning Data Access a User’s Webcam Resizing an Image. Morning Routine Make Coffee

We get it,Promises are GREAT!

buuuuuuttt...

Page 14: JavaScript IOUs - Smart Data · 2019-12-20 · Promises = IOU for Future Action AJAX Call Returning Data Access a User’s Webcam Resizing an Image. Morning Routine Make Coffee

What’s with the .then()?It’s kinda ‘callback-y’

Page 15: JavaScript IOUs - Smart Data · 2019-12-20 · Promises = IOU for Future Action AJAX Call Returning Data Access a User’s Webcam Resizing an Image. Morning Routine Make Coffee

Any code that needs to comeafter the Promise still needs to bein the final .then() callback.

Page 16: JavaScript IOUs - Smart Data · 2019-12-20 · Promises = IOU for Future Action AJAX Call Returning Data Access a User’s Webcam Resizing an Image. Morning Routine Make Coffee

async / await is still based on Promises, but it’s a cleaner syntax.

Page 17: JavaScript IOUs - Smart Data · 2019-12-20 · Promises = IOU for Future Action AJAX Call Returning Data Access a User’s Webcam Resizing an Image. Morning Routine Make Coffee
Page 18: JavaScript IOUs - Smart Data · 2019-12-20 · Promises = IOU for Future Action AJAX Call Returning Data Access a User’s Webcam Resizing an Image. Morning Routine Make Coffee
Page 19: JavaScript IOUs - Smart Data · 2019-12-20 · Promises = IOU for Future Action AJAX Call Returning Data Access a User’s Webcam Resizing an Image. Morning Routine Make Coffee

JavaScript is almost entirely Asynchronous / Non-Blocking

Great!But, that makes it hard to read/write.

Page 20: JavaScript IOUs - Smart Data · 2019-12-20 · Promises = IOU for Future Action AJAX Call Returning Data Access a User’s Webcam Resizing an Image. Morning Routine Make Coffee

PHP

Page 21: JavaScript IOUs - Smart Data · 2019-12-20 · Promises = IOU for Future Action AJAX Call Returning Data Access a User’s Webcam Resizing an Image. Morning Routine Make Coffee

JS

Page 22: JavaScript IOUs - Smart Data · 2019-12-20 · Promises = IOU for Future Action AJAX Call Returning Data Access a User’s Webcam Resizing an Image. Morning Routine Make Coffee

The PHP is easier to read.

The JS is more performant.

There’s got to be

a cleaner way...

Page 23: JavaScript IOUs - Smart Data · 2019-12-20 · Promises = IOU for Future Action AJAX Call Returning Data Access a User’s Webcam Resizing an Image. Morning Routine Make Coffee

Synchronouslooking code,

without the wait!

Page 24: JavaScript IOUs - Smart Data · 2019-12-20 · Promises = IOU for Future Action AJAX Call Returning Data Access a User’s Webcam Resizing an Image. Morning Routine Make Coffee
Page 25: JavaScript IOUs - Smart Data · 2019-12-20 · Promises = IOU for Future Action AJAX Call Returning Data Access a User’s Webcam Resizing an Image. Morning Routine Make Coffee
Page 26: JavaScript IOUs - Smart Data · 2019-12-20 · Promises = IOU for Future Action AJAX Call Returning Data Access a User’s Webcam Resizing an Image. Morning Routine Make Coffee

Slow...

Page 27: JavaScript IOUs - Smart Data · 2019-12-20 · Promises = IOU for Future Action AJAX Call Returning Data Access a User’s Webcam Resizing an Image. Morning Routine Make Coffee

… Fast!

FIRE

WAIT FOR BOTH

Page 28: JavaScript IOUs - Smart Data · 2019-12-20 · Promises = IOU for Future Action AJAX Call Returning Data Access a User’s Webcam Resizing an Image. Morning Routine Make Coffee

Option 1

Make SureErrors Don’t Happen

Why waste dev time on something that should never happen?#problemSolved

Page 29: JavaScript IOUs - Smart Data · 2019-12-20 · Promises = IOU for Future Action AJAX Call Returning Data Access a User’s Webcam Resizing an Image. Morning Routine Make Coffee

Option 2

Try / CatchWrap that sucker in a safety blanket

Page 30: JavaScript IOUs - Smart Data · 2019-12-20 · Promises = IOU for Future Action AJAX Call Returning Data Access a User’s Webcam Resizing an Image. Morning Routine Make Coffee
Page 31: JavaScript IOUs - Smart Data · 2019-12-20 · Promises = IOU for Future Action AJAX Call Returning Data Access a User’s Webcam Resizing an Image. Morning Routine Make Coffee

Option 3

Higher Order FunctionAsync functions can chain a .catch()

Page 32: JavaScript IOUs - Smart Data · 2019-12-20 · Promises = IOU for Future Action AJAX Call Returning Data Access a User’s Webcam Resizing an Image. Morning Routine Make Coffee
Page 33: JavaScript IOUs - Smart Data · 2019-12-20 · Promises = IOU for Future Action AJAX Call Returning Data Access a User’s Webcam Resizing an Image. Morning Routine Make Coffee

#showOff

Page 34: JavaScript IOUs - Smart Data · 2019-12-20 · Promises = IOU for Future Action AJAX Call Returning Data Access a User’s Webcam Resizing an Image. Morning Routine Make Coffee
Page 35: JavaScript IOUs - Smart Data · 2019-12-20 · Promises = IOU for Future Action AJAX Call Returning Data Access a User’s Webcam Resizing an Image. Morning Routine Make Coffee

Option 4

Handle the ErrorWhen You Call It

Page 36: JavaScript IOUs - Smart Data · 2019-12-20 · Promises = IOU for Future Action AJAX Call Returning Data Access a User’s Webcam Resizing an Image. Morning Routine Make Coffee
Page 37: JavaScript IOUs - Smart Data · 2019-12-20 · Promises = IOU for Future Action AJAX Call Returning Data Access a User’s Webcam Resizing an Image. Morning Routine Make Coffee

Option 5

Event-Based HandlingReally important if you’re working with Node.js

Page 38: JavaScript IOUs - Smart Data · 2019-12-20 · Promises = IOU for Future Action AJAX Call Returning Data Access a User’s Webcam Resizing an Image. Morning Routine Make Coffee
Page 39: JavaScript IOUs - Smart Data · 2019-12-20 · Promises = IOU for Future Action AJAX Call Returning Data Access a User’s Webcam Resizing an Image. Morning Routine Make Coffee

Tips & Tricks

● Write new APIs in Promises● Use async + await for flow control● Convert older APIs with Promisify● Choose an error handling strategy (or 2)

Page 40: JavaScript IOUs - Smart Data · 2019-12-20 · Promises = IOU for Future Action AJAX Call Returning Data Access a User’s Webcam Resizing an Image. Morning Routine Make Coffee

I’m lost...

Page 41: JavaScript IOUs - Smart Data · 2019-12-20 · Promises = IOU for Future Action AJAX Call Returning Data Access a User’s Webcam Resizing an Image. Morning Routine Make Coffee
Page 42: JavaScript IOUs - Smart Data · 2019-12-20 · Promises = IOU for Future Action AJAX Call Returning Data Access a User’s Webcam Resizing an Image. Morning Routine Make Coffee
Page 43: JavaScript IOUs - Smart Data · 2019-12-20 · Promises = IOU for Future Action AJAX Call Returning Data Access a User’s Webcam Resizing an Image. Morning Routine Make Coffee
Page 44: JavaScript IOUs - Smart Data · 2019-12-20 · Promises = IOU for Future Action AJAX Call Returning Data Access a User’s Webcam Resizing an Image. Morning Routine Make Coffee
Page 45: JavaScript IOUs - Smart Data · 2019-12-20 · Promises = IOU for Future Action AJAX Call Returning Data Access a User’s Webcam Resizing an Image. Morning Routine Make Coffee
Page 46: JavaScript IOUs - Smart Data · 2019-12-20 · Promises = IOU for Future Action AJAX Call Returning Data Access a User’s Webcam Resizing an Image. Morning Routine Make Coffee
Page 47: JavaScript IOUs - Smart Data · 2019-12-20 · Promises = IOU for Future Action AJAX Call Returning Data Access a User’s Webcam Resizing an Image. Morning Routine Make Coffee
Page 48: JavaScript IOUs - Smart Data · 2019-12-20 · Promises = IOU for Future Action AJAX Call Returning Data Access a User’s Webcam Resizing an Image. Morning Routine Make Coffee
Page 49: JavaScript IOUs - Smart Data · 2019-12-20 · Promises = IOU for Future Action AJAX Call Returning Data Access a User’s Webcam Resizing an Image. Morning Routine Make Coffee

Thank you!