forked from RubenVerborgh/JavaScript-Error-Handling
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy patherror-callbacks-node.js
executable file
·30 lines (26 loc) · 986 Bytes
/
error-callbacks-node.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
#!/usr/bin/env node
// Use case: http://ruben.verborgh.org/blog/2012/12/31/asynchronous-error-handling-in-javascript/#error-callbacks
// Mock address based on process arguments
var myAddress = process.argv[2] || "empty";
function canSendTo(address) { return address != "empty"; }
// Mock letter
var myLetter = {
sendTo: function (address, callback) { this.address = address; callback(); },
getTrackingCode: function() { return "XYZ-" + this.address; },
}
// Asynchronous function with single callback
function postLetter(letter, address, callback) {
if (canSendTo(address))
letter.sendTo(address, function () {
callback(null, letter.getTrackingCode());
});
else
callback("Cannot reach address " + address);
}
// Pass single callback
postLetter(myLetter, myAddress,
function (errorMessage, trackingCode) {
if (errorMessage)
return console.error("Letter not sent: " + errorMessage);
console.log("Letter sent with code " + trackingCode);
})