Snabbreferens

Bluebird.js Promise-bibliotek Fuskblad

Snabbreferens för Bluebird.js: spreads, felhantering, Promise.join, Promise.all, Promise.props, promisifiering och coroutines.

· Publicerad

Bluebird Bluebird är ett högpresterande Promise-bibliotek med avancerade funktioner för JavaScript och Node.js.

Översikt över metodkedjor

promise
  .then(okFn, errFn)
  .spread(okFn, errFn)        // * Packar upp array till funktionsargument
  .catch(errFn)
  .catch(TypeError, errFn)    // * Filtrerad felhantering per feltyp
  .finally(fn)
  .map(function (e) { /* ... */ })  // * Samtidig iteration med begränsning
  .each(function (e) { /* ... */ }) // * Sekventiell iteration i turordning

Metoder märkta med * är Bluebird-specifika tillägg utöver standarden för ES6-promises.


Flera argument och uppackning (Promise.spread)

Promise.resolve(['foo', 'bar'])
  .spread((item1, item2) => {
    console.log(item1, item2); // 'foo', 'bar'
  });

Se: Dokumentation för Promise.spread: Promise.spread


Kombinera oberoende promises (Promise.join)

Samordnar flera oberoende promises med fast signatur:

Promise.join(
  getPictures(),
  getMessages(),
  getTweets(),
  (pics, msgs, tweets) => {
    return { pics, msgs, tweets };
  }
);

Se: Dokumentation för Promise.join: Promise.join


Metoder för arraysamlingar

  • Promise.all([p]): Uppfylls när alla promises lyckas, eller avvisas direkt vid första felet.
  • Promise.some([p], count): Uppfylls när ett angivet antal promises har slutförts framgångsrikt.
  • Promise.any([p]): Uppfylls så snart något enskilt promise lyckas.
  • Promise.map(array, fn, { concurrency: 5 }): Mappar element med kontrollerad samtidighet.
Promise.map(urls, url => fetch(url), { concurrency: 3 })
  .then(responses => {
    // Bearbeta svar med högst 3 samtidiga anrop
  });

Objektpromises (Promise.props)

Löser ett objekt som innehåller promises till ett objekt med färdiga värden:

Promise.props({
  photos: getPhotos(),
  posts: getPosts()
}).then(result => {
  console.log(result.photos, result.posts);
});

Promisifiering (Konvertera callbacks)

Konvertera traditionella callback-funktioner i Node.js till moderna promises:

const fs = require('fs');
const Promise = require('bluebird');

// Promisifiera en enskild funktion
const readFile = Promise.promisify(fs.readFile);

// Promisifiera en hel modul på en gång
Promise.promisifyAll(fs);
// Nu är metoden fs.readFileAsync direkt tillgänglig

Coroutines (Generatorer)

const loginUser = Promise.coroutine(function* (email, password) {
  const user = yield User.findOne({ email }).exec();
  const valid = yield user.comparePassword(password);
  if (!valid) throw new Error('Invalid credentials');
  return user;
});

Relaterade ämnen