我開始與異步/等待在打字稿的事情,我對此有一些問題。我寫了這個函數從Blob獲取ArrayBuffer。使用無極與異步/等待
async function readAsArrayBuffer(blob: Blob): Promise<ArrayBuffer> {
return new Promise<ArrayBuffer>((resolve, reject) => {
let reader = new FileReader();
reader.addEventListener('load', e => resolve((<FileReader>e.target).result));
reader.addEventListener('error', e => reject((<FileReader>e.target).error));
reader.readAsArrayBuffer(blob);
});
}
所以......
- 我真的需要
async
關鍵字此功能之前?我想,它什麼也不做...... - 我應該建立在承諾執行程序功能範圍或readAsArrayBuffer範圍國家級新的FileReader? (...或不要緊?)
- 我寫了什麼是嵌套在嵌套函數功能兩種功能。難道我做錯了什麼? :-)
@trincot Yup,[參見MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise):_「如果錯誤被拋出執行器函數,promise被拒絕,執行程序的返回值被忽略。「_注意,當你從開發控制檯運行這個函數時,Chrome會記錄」Uncaught(in promise)my error「,但這實際上是因爲缺省未被捕獲的承諾拒絕處理程序。嘗試在它周圍放置一個'try..catch'來查看與僅僅拋出我的錯誤相比的區別。 –
確實,你是對的。我在FireFox中看到的輸出不如Chrome中清晰。 – trincot