mirror of
https://github.com/the-djmaze/snappymail.git
synced 2026-09-05 23:47:03 +03:00
Promises (first look)
Thread dropdown Small fixes
This commit is contained in:
parent
dd41d30f9b
commit
c23ba31e17
61 changed files with 12442 additions and 130 deletions
42
vendors/Q/examples/async-generators/4-flow-control.js
vendored
Normal file
42
vendors/Q/examples/async-generators/4-flow-control.js
vendored
Normal file
|
|
@ -0,0 +1,42 @@
|
|||
"use strict";
|
||||
|
||||
var Q = require("../../q");
|
||||
|
||||
// We get back blocking semantics: can use promises with `if`, `while`, `for`,
|
||||
// etc.
|
||||
var filter = Q.async(function* (promises, test) {
|
||||
var results = [];
|
||||
for (var i = 0; i < promises.length; i++) {
|
||||
var val = yield promises[i];
|
||||
if (test(val)) {
|
||||
results.push(val);
|
||||
}
|
||||
}
|
||||
return results;
|
||||
});
|
||||
|
||||
var promises = [
|
||||
Q.delay("a", 500),
|
||||
Q.delay("d", 1000),
|
||||
Q("l")
|
||||
];
|
||||
|
||||
filter(promises, function (letter) {
|
||||
return "f" > letter;
|
||||
}).done(function (all) {
|
||||
console.log(all); // [ "a", "d" ]
|
||||
});
|
||||
|
||||
|
||||
// we can use try and catch to handle rejected promises
|
||||
var logRejections = Q.async(function* (work) {
|
||||
try {
|
||||
yield work;
|
||||
console.log("Never end up here");
|
||||
} catch (e) {
|
||||
console.log("Caught:", e.message);
|
||||
}
|
||||
});
|
||||
|
||||
var rejection = Q.reject(new Error("Oh dear"));
|
||||
logRejections(rejection); // Caught: Oh dear
|
||||
Loading…
Add table
Add a link
Reference in a new issue