首页 > 解决方案 > 使用 FileReader 时如何在 typescript 中使用回调函数?角 5

问题描述

我在尝试将承诺/回调应用于我的 TypeScript 函数时遇到了一些困难。

我需要收集 reader.onloadend 的结果并将其发送到我的 nodejs express 后端(使用服务),但我能够做到这一点的唯一方法是通过 setTimeout,我很确定如果我可以通过使用来做到这一点setTimeout,我也可以通过使用承诺/回调来做到这一点......

我只是不知道如何,我试图将回调作为参数传递并稍后调用它,但我得到“回调不是函数”。

var reader = new FileReader();
let inf = {}
let base64data;
let splitUrl = this.url.split('-')[4];    


reader.onloadend = function() {
  base64data = reader.result;

  inf = { base64: base64data, id: splitUrl }
}

setTimeout(() => {

  console.log(inf);
}, 3000);

嘿伙计们,我通过将“函数(){}”更改为箭头函数来修复它!

标签: javascriptangularpromisecallback

解决方案


加载结束时调用您的回调函数。使用setTimeout是一个坏主意,因为它与负载的异步时序完全解耦。

只需对回调中的结果执行您想要执行的操作即可。

reader.onloadend = () => {
  base64data = reader.result;

  inf = { base64: base64data, id: splitUrl }
  console.log(inf);
  doStuffWithFile(inf);
}

推荐阅读