forked from sf-wdi-44/callbacks-and-promises
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathpromise_lesson.js
57 lines (48 loc) · 1.23 KB
/
promise_lesson.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
'use strict';
var labObject = {};
labObject.logger = console.log.bind(console);
labObject.reset = function() {
labObject.one = function() {
return Promise.resolve("Lab one complete.");
};
labObject.two = function() {
return Promise.reject("Lab two complete.");
};
labObject.three = (function(n) {
var arr = [];
for(var i = 0; i < n; i++) {
arr.push(Promise.resolve(Math.random() * 10));
}
return arr;
}).bind(null, 10);
labObject.four = (function(n) {
var arr = [];
for(var i = 0; i < n; i++) {
arr.push(new Promise(function(resolve, reject) {
var delay = Math.ceil(Math.random() * 1000);
setTimeout(function() {
resolve(delay);
}, 500 + delay);
}));
}
return arr;
}).bind(null, 10);
console.log("Labs reset.");
};
labObject.testPromise = function(promise) {
// expects a promise containing a string matching a particular regex
var pattern = /[A-Za-z]+(\s[A-Za-z]+)+\s?/;
promise.then(function(result) {
if(result.match && result.match(pattern)) {
return result;
}
throw new Error("Bad string: " + result);
}).then(function(result) {
console.log("Good string: " + result);
}).catch(function(err) {
console.error(err);
});
};
// init
labObject.reset();
module.exports = labObject;