原生API-FileReader扩展-toPromise

为了跳出回调地狱,尽量把所有异步函数用asyncawait关键字来写,也就是需要把异步函数包装成返回会promise对象的函数,本文档是给FileReader API添加toPromise函数。

// index.d.ts

interface FileReader {
  toPromise(): Promise<ProgressEvent<FileReader>>
}
// file-reader.fill.ts

FileReader.prototype.toPromise = function<T>(): Promise<T> {
  return new Promise<T>((resolve, reject) => {
    this.onload = (...rest: any) => {
      resolve(...rest)
    }

    this.onerror = (...rest: any) => {
      reject(...rest)
    }
    
    // 这里只重写了load和error,如果需要重写其他的事件,请自行添加
  })
}

Last updated