[JS] Callback to Promise
很多函式都是使用 callback
來運作的,其實可以透過改寫成 Promise
來讓它變得更方便使用:
例如常用的到的 setTimeout
:
const sleep = (delay = 0) => (
new Promise((resolve) => {
setTimeout(resolve, delay)
})
)
sleep(3000)
.then(() => getUniqueCommentAuthors())
.then((uniqueAuthors) => { this.setState({uniqueAuthors}) })
或者讀檔,改寫成 Promise
也同時可以將錯誤處理寫進去:
const readFile = (filePath) => (
new Promise((resolve, reject) => {
fs.readFile(filePath, (err, data) => {
if (err) { reject(err) }
resolve(data)
})
})
)
readFile('path/to/file')
.then((data) => console.log('Here is the data', data))
.catch((ex) => console.error('Arg!', ex))
覺得是個滿簡單好用的小技巧