Promises Promise.all, dismiss , Promises, - .
, , , ( ) . Promises , Promise.all , .then() on.
, callback - Node I/O (.. err), handleField - Node I/O- callback. " , , , ". , "" - , N , N - , N , dismiss(). , .
var promises = [];
parser.on('fields', function() {
promises.push(
new Promise(function(resolve, reject) {
handleField(function(err) {
if (err) {
reject(err);
} else {
resolve(callback.apply(null, arguments));
}
});
})
);
});
parser.on('close', function() {
Promise.all(promises).then(function(values) {
dismiss();
}, function(reason) {
console.error(reason.stack);
process.exit();
});
});
Promises, Mozilla , , .
(fn)
, , , . , .then(). , , resolve reject , .
Promise.all
Promise.all(iterable) , , Promises , .
:
Promise.all([
new Promise((resolve, reject) => setTimeout(() => resolve('work done'), 3000)),
new Promise((resolve, reject) => reject('coffee depleted'))
]).then(
(v) => console.log('all work done!'),
(r) => console.error(`Error: ${r}`)
)
, 1- , . , , Promise.all , .
Shim
Node Promises, Promises library, GitHub.
npm install promise
require it:
var Promise = require('promise');
ES6-promisify
promisify handleFields , - Node, err :
var promisify = require("es6-promisify")
handleField = promisify(handleField);
promises.push(
handleField().then(function(successArgs) {
}).catch(function(err) {
console.error(err);
})
);
, . Promise, Promise.denodify(fn).