|
|
3 years ago | |
|---|---|---|
| .. | ||
| README.md | 3 years ago | |
| package-lock.json | 3 years ago | |
| package.json | 3 years ago | |
| step1.js | 3 years ago | |
| step2.js | 3 years ago | |
| step3.js | 3 years ago | |
| step4.js | 3 years ago | |
| step5.js | 3 years ago | |
| step6.js | 3 years ago | |
README.md
Exercise 01: CSV is Easy...Right?
This is exercise 01 of JavaScript Level 2 in Learn JavaScript the Hard Way. It is meant to be done as a challenge with incorrect starting code that you are expected to fix and improve. I repeat, this code is incorrect on purpose so you can fix it and attempt to do better.
step1.js-- Use two projects to get CSV samples and try to write a simple parser that can parse all of the samples.step2.js-- This is a starter in case you are stuck, but it still fails and would fail on many CSV files. CSV is more complex than its name lets on.step3.js-- Take your parser and use the deep-equal project to compare your results to the csv-spectrum project's tests.step4.js-- Let's up the game and make this a unit test with ava, except it doesn't work because of promises/async/await not working with callbacks and events.step5.js-- First solution tostep4.jsthat usesPromisedirectly to wrap callbacks and events.step6.js-- Second solution that uses util.promisify to convert thespectrumcallback to aPromiseautomatically.
If you attempt this challenge then point me at your solution at @lzsthw and I'll take a look.
Learning Objectives
You aren't really learning about CSVs, but actually learning about how to deal with old APIs that use callbacks when you need Promises. The csv-spectrum library uses an old style of operation that loads your data then calls a function for you to process the data. These days APIs need Promises, and use async/await to deal with the promises. Using what you learned from the previous module JavaScript Level 1 you learned quite a lot about async/await/Promise/callbacks so now you apply that knowledge to deal with csv-spectrum.
If You Get Stuck
Remember the programming process of:
- Write comments in human language describing what the code should do.
- Write pseudo-code (p-code) under those comments to bridge from human to code.
- Slowly convert the p-code to JavaScript and run your script repeatedly while you do.
If you're stuck chances are you're not following this process. If you need a clue about how to handle the csv-spectrum API then jump to the step5.js file to see one way, and step6.js to see another. Try to figure it out for yourself, and if you want a clue, remember that the resolve parameter to a Promise can be called inside a callback.