【发布时间】:2016-10-11 11:54:43
【问题描述】:
当我尝试管理上传文件的 XMLHttpRequest 调用的结果时,我遇到了 tslint 问题。这是我在互联网上找到的当前方法:
// Files upload request
makeFileRequest(url: string, files: Array<File>) {
return new Promise((resolve, reject) => {
let formData: any = new FormData()
let xhr = new XMLHttpRequest()
for(let file of files) {
formData.append("uploads[]", file, file.name)
}
xhr.onreadystatechange = function () {
if (xhr.readyState === 4) {
if (xhr.status === 200) {
resolve(JSON.parse(xhr.response))
} else {
reject(xhr.response)
}
}
}
xhr.open("POST", url, true)
xhr.send(formData)
})
}
所以它起作用了,文件正在上传,后端回复 200 响应。但是在我使用这个函数的方法中,我是这样做的:
this.makeFileRequest("theurl", this.listFiles)
.map(res => res.json())
.subscribe(
res => console.log(res),
error => console.log("fails")
)
但是 tslint 在地图点告诉我这个:
TS2339 Property 'map' does not exist on type 'Promise<{}>'.
所以我认为管理 makeFileRequest 函数会更好,这样它会返回 Observable 而不是 Promise。 为了以防万一,请注意我导入“rxjs/add/operator/map”。
有人知道吗?谢谢!
【问题讨论】:
标签: typescript angular xmlhttprequest