Node.js
Bluebird Promises
Recherche…
Conversion de la bibliothèque nodeback en promises
const Promise = require('bluebird'),
fs = require('fs')
Promise.promisifyAll(fs)
// now you can use promise based methods on 'fs' with the Async suffix
fs.readFileAsync('file.txt').then(contents => {
console.log(contents)
}).catch(err => {
console.error('error reading', err)
})
Promesses fonctionnelles
Exemple de carte:
Promise.resolve([ 1, 2, 3 ]).map(el => {
return Promise.resolve(el * el) // return some async operation in real world
})
Exemple de filtre:
Promise.resolve([ 1, 2, 3 ]).filter(el => {
return Promise.resolve(el % 2 === 0) // return some async operation in real world
}).then(console.log)
Exemple de réduire:
Promise.resolve([ 1, 2, 3 ]).reduce((prev, curr) => {
return Promise.resolve(prev + curr) // return some async operation in real world
}).then(console.log)
Coroutines (Générateurs)
const promiseReturningFunction = Promise.coroutine(function* (file) {
const data = yield fs.readFileAsync(file) // this returns a Promise and resolves to the file contents
return data.toString().toUpperCase()
})
promiseReturningFunction('file.txt').then(console.log)
Élimination automatique des ressources (Promise.using)
function somethingThatReturnsADisposableResource() {
return getSomeResourceAsync(...).disposer(resource => {
resource.dispose()
})
}
Promise.using(somethingThatReturnsADisposableResource(), resource => {
// use the resource here, the disposer will automatically close it when Promise.using exits
})
Exécution en série
Promise.resolve([1, 2, 3])
.mapSeries(el => Promise.resolve(el * el)) // in real world, use Promise returning async function
.then(console.log)
Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow