У меня проблема с tslint, когда я пытаюсь управлять результатом вызова XMLHttpRequest, который я делаю для загрузки файлов. Вот мой текущий метод, который я нашел в Интернете:
// 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".
Есть ли у кого-нибудь идеи? Спасибо!