如何在使用FileReader时在typescript中使用回调函数? Angular 5

问题描述 投票:0回答:1

我正面临一些难以尝试将promises / callback应用于我的TypeScript函数。

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

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

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);

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

javascript angular promise callback
1个回答
0
投票

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

只需对回调中的结果执行您想要做的事情。

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

  inf = { base64: base64data, id: splitUrl }
  console.log(inf);
  doStuffWithFile(inf);
}
© www.soinside.com 2019 - 2024. All rights reserved.