Articles of bluebird

Come faccio a sapere se un object è una promise?

Che si tratti di una promise ES6 o una promise bluebird, Q Promise, ecc. Come faccio a verificare se un dato object è una promise?

Rallentamento dovuto all’attesa non parallela delle promesse nei generatori asincroni

Sto scrivendo il codice usando generatori e Bluebird e ho il seguente: var async = Promise.coroutine; function Client(request){ this.request = request; } Client.prototype.fetchCommentData = async(function* (user){ var country = yield countryService.countryFor(user.ip); var data = yield api.getCommentDataFor(user.id); var notBanned = yield authServer.authenticate(user.id); if (!notBanned) throw new AuthenticationError(user.id); return { country: country, comments: data, notBanned: true }; […]

Come si usa Bluebird with Angular?

Ho provato ad usare Angular con Bluebird promette: HTML: {{name}} {{also}} JS: // javascript var app = angular.module(‘HelloApp’, []); app.controller(“HomeController”, function ($scope) { var p = Promise.delay(1000).then(function () { $scope.name = “Bluebird!”; console.log(“Here!”, $scope.name); }).then(function () { $scope.also = “Promises”; }); $scope.name = “$q”; $scope.also = “promises”; }); window.app = app; [ Fiddle ] Tuttavia, […]

Ci sono ancora dei motivi per usare le librerie di promesse come Q o BlueBird ora che abbiamo le promesse ES6?

Dopo che Node.js ha aggiunto il supporto nativo per le promesse, ci sono ancora dei motivi per usare librerie come Q o BlueBird? Ad esempio se stai iniziando un nuovo progetto e assumiamo che in questo progetto non ci siano dipendenze che usano queste librerie, possiamo dire che non ci sono davvero più motivi per […]

if-else flow in promise (bluebird)

Questa è una versione breve del mio codice. var Promise = require(‘bluebird’); var fs = Promise.promisifyAll(require(“fs”)); if (conditionA) { fs.writeFileAsync(file, jsonData).then(function() { return functionA(); }); } else { functionA(); } Entrambe le condizioni chiamano functionA . C’è modo di evitare altre condizioni? Posso fare fs.writeFileSync ma sto cercando una soluzione non bloccante.

Gestire più catture nella catena di promise

Sono ancora abbastanza nuovo alle promesse e sto usando bluebird al momento, tuttavia ho uno scenario in cui non sono abbastanza sicuro di come gestirlo al meglio. Quindi, ad esempio, ho una catena di promesse all’interno di un’app express in questo modo: repository.Query(getAccountByIdQuery) .catch(function(error){ res.status(404).send({ error: “No account found with this Id” }); }) .then(convertDocumentToModel) […]

È “.then (function (a) {return a;})” un no-op per le promesse?

Sto leggendo questo tutorial su Bookshelf . Bookshelf usa le promesse di Bluebird. Ci sono alcuni esempi che assomigliano a questo: var getEvents = function(participantId) { return new models.Participant() .query({where: {id: participantId}}) .fetch({withRelated: [‘events’], require: true}) .then(function(model) { return model; }); }; Non mi sento ancora a mio agio con le promesse, ma da quello […]

Gestione asincrona delle eccezioni con promesse bluebird

Qual è il modo migliore per gestire questo scenario. Sono in un ambiente controllato e non voglio andare in crash. var Promise = require(‘bluebird’); function getPromise(){ return new Promise(function(done, reject){ setTimeout(function(){ throw new Error(“AJAJAJA”); }, 500); }); } var p = getPromise(); p.then(function(){ console.log(“Yay”); }).error(function(e){ console.log(“Rejected”,e); }).catch(Error, function(e){ console.log(“Error”,e); }).catch(function(e){ console.log(“Unknown”, e); }); Quando lanciamo […]

Qual è lo schema del dissipatore di promise?

Ho letto del pattern del dissipatore di promise in diversi punti ma non riesco a capire di cosa si tratta. Mi è stato suggerito di usarlo in codice che assomiglia a: function getDb(){ return myDbDriver.getConnection(); } var users = getDb().then(function(conn){ return conn.query(“SELECT name FROM users”).finally(function(users){ conn.release(); }); }); Qual è lo schema del dissipatore di […]

Metodo object con promesse ES6 / Bluebird

Sto usando il nodo v0.11.14-nightly-20140819-pre su Windows con il flag harmony . Ho un object JavaScript con due metodi definiti nel suo prototipo: function User (args) { this.service= new Service(args); } User.prototype.method2 = function (response) { console.log(this); // <= UNDEFINED!!!! }; User.prototype.method1 = function () { …………. this.service.serviceMethod(args) .then(this.method2) .catch(onRejected); }; function onRejected(val) { console.log(val); […]