【发布时间】:2018-09-28 23:48:28
【问题描述】:
loadcsv(file: File): string[] {
let csvRecordsArray: string[];
this.parse(file).then((p) => {
console.log(p);
csvRecordsArray = p as string[];
});
console.log('mydata', csvRecordsArray);
return csvRecordsArray;
}
console.log 内的then 打印我需要的数据。 Promise 没什么问题。但是,由于它不会阻止我的第二个console.log 在csvRecordsArray 中未定义。所以我阅读了Promises 并了解到我需要await。只要我输入async 使loadcsv async ts lint 说:
类型 'string[]' 在 ES5/ES3 中不是有效的异步函数返回类型,因为它不引用与 Promise 兼容的构造函数值。
请帮助我摆脱这种混乱。
【问题讨论】:
-
你不能创建一个调用异步函数并立即返回未来结果的函数。您需要为字符串数组返回一个承诺。
-
每个重复投票的人都没有阅读这个问题。 @Bergi 你抽签太快了。
-
@Evert 你的意思是这个问题只是关于类型错误(来自甚至没有显示的代码)?我认为 OP 的问题是他对异步代码的误解,在试图在回调中分配
csvRecordsArray = p时浮出水面。 (是的,只有我投票重复,这来自我闪亮的抛光 mjölnir:P) -
@Bergi 您应该谨慎行事。您显然在社区中非常乐于助人,但在没有解释的情况下迅速结束问题是 SO 给新人带来坏名声的原因。
-
@Evert 我什至评论过。你认为缺少什么解释?顺便说一句,如果你愿意,我可以重新提出问题
标签: javascript typescript promise es6-promise