點燈坊

失くすものさえない今が強くなるチャンスよ

如何使 API 延遲執行 ?

Sam Xiao's Avatar 2021-05-13

實務上有時為了模擬慢速 API 或回傳大量資料,會想暫時手動 Delay 一段時間,這種常見需求該如何實現呢 ?

Version

Vue 3.0.11

sleep()

import axios from 'axios'
import { pipe, always, andThen as then } from 'ramda'
import { sleep } from 'wink-fp'

export default pipe(
  always(3000),
  sleep,
  then(() => axios.get('/src/api/books.json'))
)

使用 pipe() 組合 anonymous function:

  • always(3000):準備所延遲 ms
  • sleep:延遲一段時間再執行,會回傳 Promise
  • then(() => axios.get('/src/api/books.json')):實際執行 Axios 呼叫 API

Conclusion

  • pipe() 所組合的 anonymous function 也能直接加上 export default 將其匯出

  • sleep() 回傳為 Promise,因此呼叫 API 的 Axios 必須包在 then()