1、使用Promise,別使用Callbackshtml
Callbacks不夠簡潔,它會產生大量的嵌套。在ES6中,最好使用Promisespromise
Bad: import { get } from 'request'; import { writeFile } from 'fs'; get('https://en.wikipedia.org/wiki/Robert_Cecil_Martin', (requestErr, response) => { if (requestErr) { console.error(requestErr); } else { writeFile('article.html', response.body, (writeErr) => { if (writeErr) { console.error(writeErr); } else { console.log('File written'); } }); } }); Good: import { get } from 'request'; import { writeFile } from 'fs'; get('https://en.wikipedia.org/wiki/Robert_Cecil_Martin') .then((response) => { return writeFile('article.html', response); }) .then(() => { console.log('File written'); }) .catch((err) => { console.error(err); });
2、Async/Await 比Promises更簡潔async
Promises比callbacks簡潔不少,但 ES2017/ES8 提出了async/await 方法,提供了更簡潔的解決辦法。你只須要在函數前面加一個 async關鍵字,而後就能夠不用then鏈式方法寫邏輯了。若是能用 ES2017/ES8如今就開始用吧。函數
Bad: import { get } from 'request-promise'; import { writeFile } from 'fs-promise'; get('https://en.wikipedia.org/wiki/Robert_Cecil_Martin') .then((response) => { return writeFile('article.html', response); }) .then(() => { console.log('File written'); }) .catch((err) => { console.error(err); }); Good: import { get } from 'request-promise'; import { writeFile } from 'fs-promise'; async function getCleanCodeArticle() { try { const response = await get('https://en.wikipedia.org/wiki/Robert_Cecil_Martin'); await writeFile('article.html', response); console.log('File written'); } catch(err) { console.error(err); } }