Skip to content

Instantly share code, notes, and snippets.

@mmazzarolo
Last active June 2, 2018 11:24
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save mmazzarolo/5dcd65ecb2f2e342f6c4c1262d9f5f81 to your computer and use it in GitHub Desktop.
Save mmazzarolo/5dcd65ecb2f2e342f6c4c1262d9f5f81 to your computer and use it in GitHub Desktop.
mostaza-corso-async

Async/Await, Promises, callbacks

Event driven architecture, event loop

Callback
  • Come funzionano (esempio)
const fs = require('fs');

const data = fs.readFileSync('test.txt');
console.log(data);
const fs = require('fs');

try {
  const data = fs.readFileSync('test.txt');
  console.log(data);
} catch (err) {
  console.error(err);
}
const fs = require('fs');

const data = fs.readFile('test.txt', function (err, data) {
  if (err) {
     return console.error(err);
  }
  console.log(data);
});
const fs = require('fs');

const copyFile = function(source, destination, next) {
  fs.readFile(source, function(err, data) {
    if (err) {
       return throw err;
    }
    fs.writeFile (savPath, data, function(err) {
       if (err) {
          throw err;
       }
       console.log('Bella! Ho copiato il file!');
    });
  });
};
  • Blocking/non blocking (synchronous and single thread)
  • Dove si usano: I/O in node, altro

Promises

  • Come funzionano (esempio)
const { promisify } = require('util');
const fs = require('fs');

// Definisco fs.readFile come promise
const readFileAsync = promisify(fs.readFile);

readFileAsync('test.txt')
  .then(function (data) {
    console.log('Ho questo bellissimo testo il testo:', data);
  })
  .catch(function (err) {
    console.log('Error:', err);
  });
  • Cenni XMLHttpRequest/AJAX e Fetch
fetch('https://api.github.com/users/mmazzarolo/repos?sort=updated')
  .then(res => res.json())
  .then(res => console.log(res))
  .catch(err => console.log('Error:', err))
  • Librerie: Bluebird, Q, Promise polyfills

Async/Await

  • Come funzionano (esempio)
const res = await fetch('https://api.github.com/users/mmazzarolo/repos?sort=updated')
const jsonRes = await res.json();
console.log(jsonRes)
const callApi = async (url) => {
  try {
    const res = await fetch(url)
    const jsonRes = await res.json();
    console.log(jsonRes)
  } catch (err) {
    console.log('Error:', err)
  }
}
  • Generators
  • Limiti
@mmazzarolo
Copy link
Author

Functional Programming

  • Functions are first class citizens
  • Functions declaration and invocation examples
  • Pure Functions
    • No side-effects
    • Predictable output
    • Avoid mutations
  • Immutability (Object.assign, Object.freeze, deep immutability, const vs let)
  • Map, filter, reduce
  • Lodash/Ramda

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment